我已经在Amazon Web Services上创建了一个关系型数据库(MySQL)。接下来,我想把本地CSV文件中的数据导入到这个数据库中。如果有人能提供一个大致的步骤,我会非常感激。谢谢!
我已经在Amazon Web Services上创建了一个关系型数据库(MySQL)。接下来,我想把本地CSV文件中的数据导入到这个数据库中。如果有人能提供一个大致的步骤,我会非常感激。谢谢!
使用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。
结束语:
我进行了一些调查,找到了这份官方AWS文档,介绍如何将任何来源的数据导入到托管在RDS上的MySQL中。
这是一份非常详细的、逐步指南,并包括有关如何导入CSV文件的说明。
http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.Procedural.Importing.AnySource.html
基本上,每个表必须有自己的文件。多个表的数据不能合并在同一个文件中。给每个文件与其对应的表相同的名称。文件扩展名可以是任何你喜欢的东西。例如,如果表名为“sales”,文件名可以是“sales.csv”或“sales.txt”,但不能是“sales_01.csv”。
尽可能按照正在加载的表的主键对数据进行排序。这极大地提高了加载时间并最小化了磁盘存储要求。
还有另一种选项将数据导入到MySQL数据库,您可以使用外部工具Alooma,在实时中为您执行数据导入。
我认为你最好的选择是使用你选择的语言开发一个脚本来连接数据库并导入数据。
如果你的数据库可以从互联网访问,那么你可以在本地运行该脚本。如果它在私有子网中,则可以在具有访问私有子网权限的EC2实例上运行该脚本,或者在连接到您的VPC的Lambda上运行该脚本。如果你预计运行时间少于5分钟左右,那么你应该只使用Lambda。
编辑:请注意,Lambda仅支持少数几种语言
AWS Lambda支持使用Node.js(JavaScript),Python,Java(Java 8兼容版本)和C#(.NET Core)编写的代码。