导数命令
fields terminated by 分隔符 lines terminated by换行符
文件不能加表头,否则也会当成数据插入
下面命令是万能的,可以导入各类型文件,文末扩展txt文件导入
导入csv文件
load data local infile 'E:\\tmp\\prod.csv' into table aa fields terminated by ',' lines terminated by '\r\n';
报错:Loading local data is disabled; this must be enabled on both the client and server sides
翻译:forLoading local data被禁用;这必须在客户端和服务器端都启用
我们的这种报错是属于mysql导入数据报错:local_infile服务器变量指示能否使用load data local infile命令。该变量为OFF时,禁用客户端的load data local infile命令,只要我们将该变量设置为ON时, 报错才会消失。
将local_infile的变量值设置为on
set global local_infile=1;
查看
show global variables like 'local_infile';
报错:ERROR 2068 (HY000): LOAD DATA LOCAL INFILE file request rejected due to restrictions on access.
登录mysql时加上–local-infile参数即可:mysql -uroot -p123456 --local-infile
由于我用的mysql command line client,在登录时无法选择参数,因此可以切换用户,等同于重新登录。
用system命令执行新的shell就可以
mysql> system mysql -uroot -p123456 --local-infile
报错:ERROR 2 (HY000): File ‘E: mpprod.xlsx’ not found (OS errno 2 - No such file or directory)
windows路径需要用\
报错:ERROR 1300 (HY000): Invalid utf8mb4 character string: ‘PK’
excle字符编码不同,导数会乱码报错,把数据粘贴到txt中再改成csv格式导入即可,注意txt中格式选utf-8无BOM格式编码。
扩展
txt文件导入
建表a
CREATE TABLE a(id INT,NAME VARCHAR(20))
asd.txt文件数据
执行导入命令,注意字段分隔符是$
load data local infile 'C:\\Users\\70201\\Desktop\\asd.txt' into table a fields terminated by '$' lines terminated by '\r\n';
查询结果