[MySQL] 导入数据load data infile用法整理

xiaoxiao2021-02-28  40

有时候我们需要将大量数据批量写入数据库,直接使用程序语言和Sql写入往往很耗时间,其中有一种方案就是使用MySql Load data infile导入文件的形式导入数据,这样可大大缩短数据导入时间。 LOAD DATA INFILE 语句以很高的速度从一个文本文件中读取行到一个表中。文件名必须是一个文字字符串。

1 命令load data local infile的设置

应当在/etc/mysql/my.cnf中添加这样的设置: [mysqld] #服务端配置 local-infle = 1 [mysql] #客户端配置 local-infile = 1

否则,mysql服务会提示错误: ERROR 1148 (42000): The used command is not allowed with this MySQL version.

客户端和服务端度需要开启

对于客户端也可以在执行命中加上--local-infile=1 参数

2 编码格式

若包含中文,请保证导入文件、连接字符串、导入表都是UTF-8编码。

3 执行

在使用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

转载请注明原文地址: https://www.6miu.com/read-2650031.html

最新回复(0)