将数据从CSV文件导入Amazon Web Services RDS MySQL数据库

时间:2017-06-12 20:29:06

标签: mysql amazon-web-services amazon-s3 mysql-workbench amazon-rds

我创建了一个托管在Amazon Web Services上的关系数据库(MySQL)。接下来我要做的是,将本地CSV文件中的数据导入到此数据库中。如果有人向我提供了如何解决这个问题的大纲,我将非常感激。谢谢!

4 个答案:

答案 0 :(得分:1)

这是使用MySQL命令行最容易和最轻松的事情。对于大型负载,请考虑启动新的EC2实例,安装MySQL CL工具以及将文件传输到该计算机。然后,在通过CL连接到您的数据库之后,您将执行以下操作:

mysql> LOAD DATA LOCAL INFILE 'C:/upload.csv' INTO TABLE myTable;

还可以选择匹配文件的详细信息并忽略标题(文档中有更多内容)

mysql> LOAD DATA LOCAL INFILE 'C:/upload.csv' INTO TABLE myTable FIELDS TERMINATED BY ','
ENCLOSED BY '"' IGNORE 1 LINES;

如果您对使用CL犹豫不决,请下载MySQL Workbench。它不会将任何问题连接到AWS RDS。

结束思路:

  • MySQL LOAD DATA Docs
  • AWS'Aurora RDS与MySQL兼容,因此命令也适用
  • “LOCAL”标志实际上将文件从客户端计算机(运行命令的位置)传输到数据库服务器。如果没有LOCAL,文件必须位于数据库服务器上(不能使用RDS预先将其传输到那里)
  • 也适用于大型文件!只需通过此方法发送8.2GB文件(2.6亿行)。从t2-medium EC2到db.t2.small Aurora只需要10个多小时
  • 如果您需要注意唯一键或逐行读取CSV并在插入/更新之前更改数据,则
  • 不是解决方案

答案 1 :(得分:1)

我做了一些挖掘,并找到了关于如何将数据从任何源导入到RDS托管的MySQL的官方AWS文档。

这是一个非常详细的分步指南,但没有说明如何导入CSV文件。

http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.Procedural.Importing.AnySource.html

基本上,每个表必须有自己的文件。多个表的数据不能组合在同一个文件中。为每个文件指定与其对应的表相同的名称。文件扩展名可以是您喜欢的任何内容。例如,如果表名是“sales”,则文件名可以是“sales.csv”或“sales.txt”,但不能是“sales_01.csv”。

尽可能通过正在加载的表的主键对数据进行排序。这大大缩短了加载时间并最大限度地减少了磁盘存储需求。

import data to MySQL database还有另一个选项,您可以使用外部工具Alooma,可以实时为您进行数据导入。

答案 2 :(得分:0)

我认为您最好的选择是用您选择的语言开发一个脚本来连接数据库并导入它。

如果您的数据库可以访问Internet,那么您可以在本地运行该脚本。如果它位于私有子网中,那么您可以在可访问私有子网的EC2实例上运行该脚本,也可以在连接到VPC的lambda上运行该脚本。如果您希望运行时间少于5分钟,那么您应该只使用lambda。

编辑:请注意,lambda仅支持少数几种语言

  

AWS Lambda支持用Node.js(JavaScript),Python,Java编写的代码   (Java 8兼容)和C#(.NET Core)。

答案 3 :(得分:0)

取决于文件的大小,但是如果文件大小小于1GB,我发现DataGrip可以导入较小的文件而没有任何问题:https://www.jetbrains.com/datagrip/ 您将获得不错的映射工具和图形化IDE来玩耍。 DataGrip可免费试用30天。

我遇到了RDS连接丢失的问题,该文件包含大于2GB的较大文件。不确定是关于DataGrip还是AWS方面。

enter image description here