开发者社区 问答 正文

技术运维问题 - MYSQL使用 -RDS for MySQL 如何使用 load data local infile 导入数据


RDS for MySQL 不支持 load data infile,因为这个命令要求要导入的文件必须放在 RDS 服务器上。但支持加上 local 关键字的命令, 加上 local 后是从客户端机器导入文件, 下面介绍如何使用 load data local infile 向 RDS 导入数据。

操作步骤


  1. 打开 /etc/mysql/my.conf, 找到 [mysql] 配置的位置,然后在下面添加一行配置 local-infile。

  2. 使用 MySQL 连接到 RDS,如下图所示:

    目标表为 tld,源数据文件为 /root/data.txt,先检查表的数据和文件信息,如下图所示:
    [url=http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/pic/41752/cn_zh/1489975837649/%E7%9B%AE%E6%A0%87%E8%A1%A8%E6%9F%A5%E8%AF%A2.png]
    执行如下导入命令:load data local infile '/root/data.txt' into table tld fields terminated by ',' lines terminated by '\n';





参数说明:

  • into table 时,如果表有主键且表不为空,data.txt 时如果有相同的主键会报错并停止载入。可使用 replace into 将新数据覆盖旧数据或者使用 ingnore into 来忽略主键冲突的记录。

  • fields terminated ',' 表示列之间使用逗号作为分隔符。

  • lines terminated '\n' 表示使用回车作为换行符,如果是 Windows 下的文件上传到 Linux下,需要使用 '\r\n' 即回车换行.

检验数据,执行命令 select * from tld;,若出现如下结果,则说明一切正常。
[url=http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/pic/41752/cn_zh/1489976206015/%E6%95%B0%E6%8D%AE%E6%A3%80%E6%9F%A5%E7%BB%93%E6%9E%9C.png]
如问题还未解决,请联系[url=https://selfservice.console.aliyun.com/ticket/createIndex.htm]售后技术支持

展开
收起
梨好橙 2018-09-26 23:24:40 2913 分享 版权
阿里云 AI 助理回答

在RDS for MySQL中使用LOAD DATA LOCAL INFILE命令导入数据时,需确保客户端已正确配置以允许本地文件导入。以下是详细的操作步骤和说明:

  1. 客户端配置:

    • 修改配置文件: 在您的MySQL客户端机器上,编辑MySQL的配置文件(通常是/etc/mysql/my.cnf),在[mysql]段下添加以下行以启用local-infile功能:
      [mysql]
      local-infile=1
      
    • 重启客户端连接: 修改配置后,请确保重新启动任何已经打开的MySQL客户端连接,以便新的配置生效。
  2. RDS参数设置:

    • 登录阿里云RDS控制台,选择对应的RDS实例。
    • 进入参数设置页面,找到local_infile参数,将其值设置为ON并提交更改。
  3. 执行导入命令: 使用如下命令格式从客户端机器导入数据到RDS中的表:

    LOAD DATA LOCAL INFILE '/root/data.txt'
    INTO TABLE tld
    FIELDS TERMINATED BY ','
    LINES TERMINATED BY '\n';
    
    • INTO TABLE tld: 指定目标表名为tld
    • FIELDS TERMINATED BY ',': 设置字段分隔符为逗号。
    • LINES TERMINATED BY '\n': 表示行之间以换行符分隔。若文件来源于Windows系统,请考虑使用\r\n作为行分隔符。
  4. 处理主键冲突:

    • 如果表存在主键且已有数据,可采用以下策略:
      • 使用REPLACE INTO替换现有记录:LOAD DATA LOCAL INFILE ... REPLACE INTO TABLE ...
      • 或者使用IGNORE忽略重复记录:LOAD DATA LOCAL INFILE ... IGNORE INTO TABLE ...
  5. 验证导入结果: 执行查询检查导入是否成功:

    SELECT * FROM tld;
    

注意事项: - 确保在连接RDS时使用的客户端工具或命令行工具已加上-local-infile选项,例如:mysql -u username -p -h hostname -P port --local-infile=1。 - 导入前请确认数据文件的格式与LOAD DATA命令中的字段分隔符、行结束符等设置相匹配。 - 考虑到操作的安全性,建议在业务低峰期进行数据导入,并确保有数据备份以防不测。

如果按照上述步骤操作后问题仍未解决,建议联系阿里云售后技术支持获取进一步帮助。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答