解决ubuntu server mysql load data infile 导入本地文件ERROR 1148 (42000)错误。
问题:在ubuntu server 上使用apt-get 安装完 mysql 使用 load data infile 出现错误,错误代码如下:
ERROR 1148 (42000): The used command is not allowed with this MySQL version
这是由于ubuntu server 下 mysql 默认不允许使用 load data infile命令。
解决办法:
1.安装时加上 --enable-local-infile 参数就可以了执行了。
这种方式显然只适合刚开始安装mysql 的时候。
2.可以在执行命中加上--local-infile=1 参数即可解决。
如:mysql -u root -p databaseName --local-infile=1 -e "LOAD DATA LOCAL INFILE 'data.txt' into table test(name,sex) ";
注意:实际导入过程中需要给导入的文件设置编码,导入的表设置字段等参数,由于单双引号的相互包含会出很多问题,本人在此就遇到了很多问题。比如红字部分,单引号包含一个双引号,大致意思就是忽略掉文件中的双引号。但是由于外层里层单引号嵌套会使得导入的数据有问题。所以将单引号替换为双引号,并将双引号转义。
有问题的导入命令:
mysql -u root -p wxsearch --local-infile=1 -e 'LOAD DATA LOCAL INFILE "/tmp/cxr-data-004.csv" INTO TABLE mpdata character set "utf8" fields terminated by "," enclosed by '"' (`name`, `cateid`, `appID`, `type`, `description`, `keyword`, `logo`, `qrcode`)';
正确的导入命令:
mysql -u root -p wxsearch --local-infile=1 -e 'LOAD DATA LOCAL INFILE "/tmp/cxr-data-004.csv" INTO TABLE mpdata character set "utf8" fields terminated by "," enclosed by "\"" (`name`, `cateid`, `appID`, `type`, `description`, `keyword`, `logo`, `qrcode`)';
主要是将 enclosed by '"' 替换为 enclosed by "\""