mysql ignore 1 lines_csv批量导入mysql命令

本文介绍了如何使用MySQL的`LOAD DATA INFILE`命令将CSV数据批量导入到数据库,重点讲解了`ignore 1 lines`的用法,用于忽略文件的第一行(通常是字段名)。同时,解释了`replace`和`ignore`关键字的区别,以及如何处理字段分隔符、转义字符和行终止符。最后提到了数据导出的命令。

今天把从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下生成,那分割用 ‘rn’,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';

希望多多交流!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值