RDS for MySQL不支持load data infile
,因为这个命令要求待导入的文件必须在RDS实例上。但是您可以加上local关键字, 加上local后可以从客户端机器导入文件, 本文介绍如何使用load data local infile
向RDS导入数据。
前提条件
- 已对RDS实例设置白名单,申请外网地址,以及创建数据库和账号。详情请参见快速入门。
- 已购买云服务器ECS,并且安装了与RDS for MySQL实例相同版本的mysql。
- 待导入的数据存储在txt文件中,示例如下。
操作步骤
- 登录ECS实例,修改mysql的配置文件my.cnf,加入一行配置
local-infile
。 - 在ECS实例上使用如下命令并输入高权限账号密码连接到RDS for MySQL实例:
mysql -h <RDS实例外网连接地址> -u <高权限账号名> -p
- 执行如下命令导入:
use <数据库名>; load data local infile '<待导入文件路径>' into table <表名> fields terminated by ',' lines terminated by '\n';
说明- into:导入时如果表有主键且表不为空,待导入文件里如果有相同的主键会报错并停止导入。可使用 replace into将新数据覆盖旧数据或者使用ingnore into来忽略主键冲突的记录。
- fields terminated ',' :表示列之间使用逗号作为分隔符。
- lines terminated '\n':表示使用回车作为换行符,如果是Windows下的文件上传到Linux,需要使用 '\r\n' 。