视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
csv批量导入mysql命令_MySQL
2020-11-09 19:52:57 责编:小采
文档


今天把从Kaggle上下载下来的csv数据导入mysql,想做个统计分析,怎奈csv文件有些大,所以只能用mysql 命令导入,现mark下,以备以后不时之需:

1. 导入:

基本语法:
load data [low_priority] [local] infile 'file_name txt' [replace | ignore]
into table tbl_name
[character set gbk]
[fields
[terminated by't']
[OPTIONALLY] enclosed by '']
[escaped by'\' ]]
[lines terminated by'n']
[ignore number lines]
[(col_name, )]

导入命令_example:

load data infile 'csv文件路径\\test.csv' 
replace into table 表名 
fields terminated by ',' 
optionally enclosed by '"' 
lines terminated by '\n' 
ignore 1 lines(Id,@dummy,DayOfWeek,PdDistrict,Address,X,Y);

不要小看这个简单的example,包含了很多东西;

第一行就是导入文件;

第二行参看语法就会发现有两个词:replace 和 ignore 。replace和ignore关键词控制对现有的唯一键记录的重复的处理。如果你指定replace,新行将代替有相同的唯一键值的现有行。如果你指定ignore,跳过有唯一键的现有行的重复行的输入。如果你不指定任何一个选项,当找到重复键时,出现一个错误,并且文本文件的余下部分被忽略。
所以我觉得现实情况下你的表设计主键,还是最好要不会重复的字段;

第三~四行很简单就是每个具体字段内容之间是以逗号隔开的,那就以逗号分开。
erminated by描述字段的分隔符,默认情况下是tab字符(\t)
enclosed by描述的是字段的括起字符,就是说字段中如果有引号,就当做是字段的一部分。
语法中还有一个是 escaped by, 它描述的是转义字符。默认的是反斜杠(backslash:\ )

第五行 lines terminated by是对每行进行分割,这里要注意一个问题,如果csv文件是在windows下生成,那分割用 ‘\r\n’,linux下用 ‘\n’。

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

PS:想顺便插入导入时间,就在最后加上set update_time=current_timestamp;

2. 导出:

同时附带上导出命令:

select * from 表名
into outfile '导出路径\\test.csv' 
fields terminated by ',' 
optionally enclosed by '"' 
escaped by '"' 
lines terminated by '\n'; 

希望多多交流!

下载本文
显示全文
专题