从csv文件中导入数据到MySQL数据库

转:

一、Workbench客户端导入(8.0.11基本导不全且速度奇慢)

1.点击如下图标创建数据库(非必要)

2.在表类上右键导入

二、SQL语句导入(可先用上步导入,再清除数据,这样可免去设置格式等问题)

基本语法:

load data [low_priority | concurrent]  [local]  infile  'file_name'

[replace | ignore]

INTO TABLE tbl_name

[partition (partition_name [, partition_name] ...)] [character set charset_name]

{ fielsd | columns }

[terminated by 'string']

[[optionally]  enclosed by 'char']

[escaped by 'char'] ]

[LINES

[STARTING BY 'string']

[TERMINATED BY 'string']

]

[ignore number  {LINES | ROWS} ]

[(col_name_or_user_var [, col_name_or_user_var] ...)]

[SET col_name={expr | DEFAULT}, [, col_name={expr | DEFAULT}] ...]

解释:

replaceignore关键词控制对现有的唯一键记录的重复的处理。如果你指定replace,新行将代替有相同的唯一键值的现有行。如果你指定ignore,跳过有唯一键的现有行的重复行的输入。如果你不指定任何一个选项,当找到重复键时,出现一个错误,并且文本文件的余下部分被忽略。

如果你指定关键词low_priority,那么MySQL将会等到没有其他人读这个表的时候,才插入数据。如果指定local关键词,则表明从客户主机读文件。如果local没指定,文件必须位于服务器上。

文件名必须以文字字符串形式给出。在Windows上,将路径名中的反斜杠指定为正斜杠或加倍反斜杠。

如果指定FIELDS子句,则每个子子句(TERMINATED BY,[OPTIONALLY] ENCLOSED BY和ESCAPED BY)也是可选的,但您必须至少指定其中一个子句。允许这些子句的参数仅包含ASCII字符。

LOAD DATA INFILE可用于读取从外部源获取的文件。例如,许多程序可以以逗号分隔值(CSV)格式导出数据,这样行的字段用逗号分隔并用双引号括起来,并带有一行初始的列名。如果此类文件中的行由回车符/换行符对终止,则此处显示的语句说明了用于加载文件的字段和行处理选项:

LOAD DATA INFILE 'data.txt' INTO TABLE tbl_name

FIELDS TERMINATED BY ',' ENCLOSED BY '"'

LINES TERMINATED BY '\r\n'

IGNORE 1 LINES;

如果输入值不一定用引号 括起来,请在ENCLOSED BY关键字之前使用OPTIONALLY。

如果指定OPTIONALLY,则ENCLOSED BY字符仅用于包含具有字符串数据类型的列

示例1

load data infile 'F:/Data/test1.csv' --CSV文件存放路径

into table student character set utf8 --要将数据导入的表名

fields

terminated by ',' --指出数据之间的分隔符;

optionally enclosed by '"' --指出字段以半角双引号 括住,如果不一定括住,就加上optionally;

escaped by '"'--指出转义字符,字符串本身的双引号用两个双引号表示(CSV中,对双引号的转义是两个双引号,即"",而不是\"),如果为空则是不设置转义字符,可以防止文本中的“\”被当作转义符;

lines terminated by '\r\n'--数据行之间以\r\n分隔,如果csv文件是在windows下生成,那分割用 '\r\n',linux下用 '\n'。

ignore 1 lines

(Id,@dummy,DayOfWeek,PdDistrict,Address,X,Y);

/*忽略第一行,因为第一行往往是字段名。后边括号中有个字段很特别 @dummy,它是说如果csv文件中有个字段我不想插进去,那就把对应字段名变成@dummy */

示例2:

load data infile "C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/zuieniang2.csv"

into table zuieniang2  character set utf8

Fields Terminated By ','

optionally Enclosed By '"'

escaped by ''

Lines Terminated By '\r\n'

IGNORE 1 LINES;

fields terminated by '': 这是指出csv文件中的字段终止符,也就是数据之间的分隔符;

enclosed by '"': 指出字符串以半角双引号包住;字符串本身的双引号用两个双引号表示

lines terminated by '': 数据行之间以\r\n分隔

三、可能碰到的错误:

1.如果发生1290或29错误,原因是导入文件所在目录不是安全目录。 执行show variables like '%secure%';,查看MYSQL指定的安全目录在哪里。将需要导入的文件放在这个目录下面即可。

如果还不行,在my.ini文件中搜索secure-file-priv找到并将它的值改为

secure-file-priv=''

重启MySQL服务(不是客户端)就可以在任何目录下操作了(如果重启MySQL不行就重启电脑)。

2.workbench发生2013错误或黄色叹号

在view-Preferences里修改如下时间设置后重启客户端:

This sets the maximum amount of time (in seconds) that a query can take before MySQL Workbench disconnects from the MySQL server.

要是还不行那只能写SQL语句了。不得不说workbench就是个垃圾,经常莫名其妙出错,强烈建议写语句。

3.Incorrect integer value (不能读入空值)

MySQL 5.0以上的版本如果是空值应该要写NULL,要在安装mysql的时候去除默认勾选的enable strict SQL mode。那么如果我们安装好了mysql怎么办了,解决办法是更改mysql中的配置 my.ini

(1)5.x版本

my.ini中查找sql-mode,

默认为sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION",

将其修改为sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION",重启mysql后即可

(2)8.x版本

改为

sql-mode="NO_ENGINE_SUBSTITUTION"

4. 3719 'utf8' is currently an alias for the character set UTF8MB3, which will be replaced by UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous.

在my.ini中配置default-character-set的值为:

default-character-set=utf8mb4

四、导出命令:

select * from 表名

into outfile '导出路径\\test.csv'

fields terminated by ','

enclosed by '"'

escaped by ''

lines terminated by '\r\n';

如果要导出带列名的,可用:

select * into outfile 'd:\\columns.csv'

fields terminated by ','

lines terminated by '\n'

from (

select 'name','age'

union

select name,age from test) AS t;

如果导出后出现某些列的总行数不一致,很有可能是某一列某一行含回车或换行符,如果表的某个列里包含回车符或者换行符,那么生成的CSV文件或者进行excel导入,都会将原本的1行数据,拆分成2行。因为CSV或者excel导入,是按数据的行来认定数据条数。导出前可先去除:

UPDATE tablename SET  field = REPLACE(REPLACE(field, CHAR(10),' '), CHAR(13),' ');

char(10):  换行符,char(13):  回车符

举例:

UPDATE zuieniang2 SET 认证原因 = REPLACE(REPLACE(认证原因, CHAR(10),' '), CHAR(13),' ');

注:

如果执行上句时出现1175错误,这是因为MySql运行在safe-updates模式下,该模式会导致非主键下无法执行update或者delete命令。可执行下句后再执行update:

SET SQL_SAFE_UPDATES = 0;

(1)查询已有数据库,使用命令(注意结尾的分号)

show databases;

(2)使用这个数据库,使用命令

use test;

(3)查询数据库中的表,使用命令

show tables;

如果查询的两个表大小相当,那么用in和exists差别不大

如果两个表中一个较小,一个是大表,则子查询表大的用exists(长~大),子查询表小的用in(短~小):

例如:表A(小麦),表B(粮食)

1:

select * from A where cc in (select cc from B) 效率低,用到了A表上cc列的索引;

select * from A where exists (select cc from B where cc=A.cc) 效率高,用到了B表上cc列的索引。

2:

select * from B where cc in (select cc from A) 效率高,用到了B表上cc列的索引;

select * from B where exists (select cc from A where cc=B.cc) 效率低,用到了A表上cc列的索引。

not in 和not exists如果查询语句使用了not in 那么内外表都进行全表扫描,没有用到索引;而not extsts 的子查询依然能用到表上的索引。所以无论那个表大,用not exists都比not in要快

从csv文件中导入数据到MySQL数据库相关推荐

  1. 大数据_MapperReduce_从CSV文件中读取数据到Hbase_测试---Hbase工作笔记0022

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 然后我们继续看,这里我们写完以后,一会咱们去测试一下. 可以看到上一节我们已经写了,从csv文件中 ...

  2. 将 .csv文件中的数据导入My SQL数据库中

    利用My SQL 将.csv文件中的数据导入数据库.首先以管理员身份运行cmd,输入指令net start mysql 运行mysql服务,然后输入指令mysql -u root -p ,输入密码.* ...

  3. php上传查询excel到mysql_PHP上传Excel文件导入数据到MySQL数据库示例

    PHP上传Excel文件导入数据到MySQL数据库示例2020-06-20 00:34:11 最近在做Excel文件导入数据到数据库.网站如果想支持批量插入数据,可以制作一个上传Excel文件,导入里 ...

  4. python怎么读取csv的一部分数据_python批量读取csv文件 如何用python将csv文件中的数据读取成数组...

    如何用python把多个csv文件数据处理后汇总到新csv文件你看这月光多温柔,小编转头还能看见你,一切从未坍塌. 可以用pandas读取数据,首先把文件方同一个文件价里,然后对当前文件价的所有内容循 ...

  5. mysql 导入数据库sql语句_mysql中导入数据与导出数据库sql语句

    本文章来详细介绍关于mysql中导入数据与导出数据库sql语句,在mysql中常用的导入与导出数据的命令有source与mysqldump大家可参考. 1.例1:连接到本机上的MYSQL 首先在打开D ...

  6. java将数据写入csv文件,从csv文件中读取数据

    全栈工程师开发手册 (作者:栾鹏) java教程全解 java将数据写入csv文件,从csv文件中读取数据 测试代码 public static void main(String[] arges){/ ...

  7. R语言:从 csv 文件中读取数据,然后将数据写入 csv 文件

    在 R 中,我们可以从存储在 R 环境外部的文件读取数据.我们还可以将数据写入将由操作系统存储和访问的文件中.R可以读取和写入各种文件格式,如csv,excel,xml等. 在本章中,我们将学习从 c ...

  8. mysql 导入tsv文件_HBase数据迁移(2)- 使用bulk load 工具从TSV文件中导入数据

    英文原文摘自:<HBase Administration Cookbook>??编译:ImportNew?-?陈晨 本篇文章是对数据合并的系列文章之二(共三篇),针对的情景模式就是将现有的 ...

  9. php 上传excel到mysql_PHP上传Excel文件导入数据到MySQL数据库示例

    最近在做Excel文件导入数据到数据库.网站如果想支持批量插入数据,可以制作一个上传Excel文件,导入里面的数据内容到MySQL数据库的小程序. 要用到的工具: ThinkPHP:轻量级国产PHP开 ...

最新文章

  1. ubuntu之路——day8.1 深度学习优化算法之mini-batch梯度下降法
  2. python文件读写r+_python文件读写操作(r/r+/rb/w/w+/wb/a/a+/ab)
  3. zabbix 2.2自动安装脚本
  4. python中的any函数_python函数-any()
  5. 阿里云首发Dubbo3.0 + Nacos2.0
  6. android+java.lang.VerifyError
  7. Hello Blazor:(2)集成Tailwind CSS续——nuget包方式
  8. Spring框架----Spring框架的基本概念
  9. 前端也能玩转机器学习?Google Brain 工程师来支招!
  10. ueditor1.4.3 jsp版在ssh下的配置
  11. 带前后翻页的图片关东 js特效
  12. 小程序使用javascript-obfuscator工具进行代码混淆处理
  13. 【应用软件】用jpg+swf制作gif动感小图(附带AVI转gif技巧)
  14. 网络流(Network Flow)
  15. (predicted == labels).sum().item()
  16. Raspberry - 解决中兴(ZTE)摄像头无法使用密码访问树莓派上的samba共享(NAS)
  17. es linux下使用api进行es故障操作处理
  18. Python爬虫汉字乱码问题
  19. 冻成鸡爪了,冬天的鱼儿狡猾的干活
  20. 多项式朴素贝叶斯分类器_多项式朴素贝叶斯分类器的主题预测

热门文章

  1. “知识共享”国际许可协议4.0版本
  2. w ndows7怎么安装,《联想Y460在Wndows7系统下完美安装XP系统的方法.doc
  3. 渗透测试入门(域名、DNS)— 理论知识
  4. 计算机缓存Cache以及Cache Line详解
  5. 10大主流压力测试工具推荐
  6. obs 推流编码在哪设置_直播软件OBS推流的设置方法
  7. Ms Sql Server 2000 个人绿色版 5.62
  8. 三国霸王大陆服务器维护,霸王大陆修改教程
  9. 使用nginx模拟反向代理
  10. 机器视觉系列(一)——概述