回答

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”极光RDS与MySQL兼容,因此命令的作品有太多
  • ‘LOCAL’标志实际上是将文件从客户机传输(你在哪里运行该命令)到数据库服务器。如果没有LOCAL,则文件必须位于数据库服务器上(无法事先使用RDS将其传输)
  • 对于大文件也很有效!刚刚通过此方法发送了8.2GB文件(2.6亿行)。从t2介质EC2到db.t2.small只花了超过10小时Aurora
  • 如果您需要注意唯一键或逐行读取CSV并在插入/更新之前更改数据,则不是一种解决方案
0

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

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

编辑:请注意,拉姆达仅支持的语言

AWS LAMBDA支持用的Node.js(JavaScript的),Python和Java的代码 少数(Java的8兼容)和C#(.NET核心)。

0

我做了一些挖掘,发现了这个官方的AWS文档,介绍如何将数据从任意源导入到RDS上托管的MySQL。

这是一个非常详细的一步一步的指导和icludes关于如何导入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,它可以为您实时导入数据。