有时候我们需要将大量数据批量写入数据库,直接使用程序语言和Sql写入往往很耗时间,其中有一种方案就是使用MySql Load data infile导入文件的形式导入数据,这样可大大缩短数据导入时间。 LOAD DATA INFILE 语句以很高的速度从一个文本文件中读取行到一个表中。文件名必须是一个文字字符串。
否则,mysql服务会提示错误: ERROR 1148 (42000): The used command is not allowed with this MySQL version.
客户端和服务端度需要开启
对于客户端也可以在执行命中加上--local-infile=1 参数若包含中文,请保证导入文件、连接字符串、导入表都是UTF-8编码。
在使用LOAD DATA到MySQL的时候,有2种情况:
在远程客户端(需要添加选项:–local-infile=1)导入远程客户端文本到MySQL,需指定LOCAL(默认就是ignore),加ignore选项会放弃数据,加replace选项会更新数据,都不会出现唯一性约束问题。 $mysql -h 10.10.123.456 -P 3333 -u user_name -p'password' --local-infile=1 -e "LOAD DATA LOCAL INFILE '/tmp/test.txt' INTO TABLE tmp_loaddata FIELDS TERMINATED BY '\t'"; #注意:-p'password' 中间不能有空格 在本地服务器导入本地服务器文本到MySQL,不指定LOACL,出现唯一性约束冲突,会失败回滚,数据导入不进去,这个时候就需要加ignore或者replace来导入数据。 mysql>LOAD DATA INFILE '/home/username/test.txt' INTO TABLE tmp_loaddata FIELDS TERMINATED BY ','参考文章: http://www.cnblogs.com/conanwang/p/6118731.html https://blog.csdn.net/moxiaomomo/article/details/8966500