打开原始文件,在右下角看是window(CRLF)的还是Unix(LF)的
如果是window(CRLF)
导入的语句为:
load data local infile '/var/lib/mysql-files/cshi.txt'
into table SHELF2
character set utf8 -- 可选,避免中文乱码问题
fields terminated by 'Ж' -- 字段分隔符,每个字段(列)以什么字符分隔,默认是 \t
optionally enclosed by '' -- 文本限定符,每个字段被什么字符包围,默认是空字符
lines terminated by '\r\n' -- 记录分隔符,如字段本身也含\n,那么应先去除,否则load data 会误 将其视作另一行记录进行导入
ignore 1 rows; -- 忽略首行
如果是Unix(LF)的
执行语句为:
load data local infile '/var/lib/mysql-files/SHELF1.CSV'
into table SHELF2
character set utf8
fields terminated by 'Ж'
optionally enclosed by ''
lines terminated by '\n'
ignore 1 rows;
两个的区别就是主要是 '\r\n'与 '\n'的区别,就是这个区别,实在很抗
如果出现这样的报错:
ERROR 1261 (01000): Row 15 doesn't contain data for all columns
这是因为sql_mode 被设为了 strict 模式, 要想继续导入需要把“strict_trans_tables” 从 sql_mode 中去掉.
查看 MySQL 当前连接的 sql_mode
mysql> show variables like 'sql_mode';
临时修改sql_mode
mysql> set sql_mode='';
之后在重新执行语句就可以了。
注意细节:我是把文件上传到集群才批量导入的,mysql需要把文件导到指定的安全目录才可以,每个人的安全目录不一样,具体安全目录在哪,你们自己查查看。