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

将数据从CSV文件导入Amazon Web Services RDS MySQL数据库,mysql,amazon-web-services,amazon-s3,mysql-workbench,amazon-rds,Mysql,Amazon Web Services,Amazon S3,Mysql Workbench,Amazon Rds,我已经创建了一个托管在AmazonWeb服务上的关系数据库(MySQL)。我接下来要做的是,将本地CSV文件中的数据导入此数据库。如果有人能给我一个关于如何做的提纲,我将不胜感激。谢谢 我认为最好的办法是用您选择的语言开发一个脚本,以连接到数据库并导入它 如果数据库可以通过internet访问,则可以在本地运行该脚本。如果它位于专用子网中,则可以在访问专用子网的EC2实例上或在连接到VPC的lambda上运行该脚本。如果您希望运行时少于5分钟左右,那么实际上应该只使用lambda 编辑:注意la

我已经创建了一个托管在AmazonWeb服务上的关系数据库(MySQL)。我接下来要做的是,将本地CSV文件中的数据导入此数据库。如果有人能给我一个关于如何做的提纲,我将不胜感激。谢谢

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

如果数据库可以通过internet访问,则可以在本地运行该脚本。如果它位于专用子网中,则可以在访问专用子网的EC2实例上或在连接到VPC的lambda上运行该脚本。如果您希望运行时少于5分钟左右,那么实际上应该只使用lambda

编辑:注意lambda只支持少数语言

AWS Lambda支持使用Node.js(JavaScript)、Python和Java编写的代码 (与Java 8兼容)和C#(.NET内核)


通过使用MySQL命令行,这是最简单、最省力的。对于大负载,考虑旋转一个新的EC2实例,安装MySQL CL工具,并将文件传输到该机器。然后,通过CL连接到数据库后,您将执行以下操作:

mysql> LOAD DATA LOCAL INFILE 'C:/upload.csv' INTO TABLE myTable;
还有一些选项可以匹配文件的详细信息并忽略标题(文档中还有很多)

如果您对使用CL犹豫不决,请下载MySQL Workbench。它将no prob连接到AWS RDS

结束语:

  • AWS的Aurora RDS与MySQL兼容,所以命令也可以在那里使用
  • “LOCAL”标志实际上将文件从客户机(运行命令的地方)传输到DB服务器。如果没有本地,文件必须位于DB服务器上(无法使用RDS提前将其传输到该服务器)
  • 在大文件上也非常有效刚刚通过此方法发送了一个8.2GB文件(2.6亿行)。从t2中等EC2到db.t2小极光只花了10个多小时
  • 如果需要注意唯一键或逐行读取CSV并在插入/更新之前更改数据,则这不是解决方案

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

这是一个非常详细的分步指南,包括如何导入CSV文件的说明

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

只要有可能,请按正在加载的表的主键对数据进行排序。这大大缩短了加载时间,并将磁盘存储需求降至最低


还有另一个选项,您可以使用外部工具ALOMA,该工具可以实时为您导入数据。

取决于文件的大小,但如果文件小于1GB,我发现DataGrip导入较小的文件时不会出现任何问题: 您可以使用很好的映射工具和图形化IDE。DataGrip可免费试用30天

我遇到自己的RDS连接丢失,文件较大,如>2GB。不确定是关于DataGrip还是AWS端

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