将数据从 CSV 文件导入 Amazon Web Services RDS MySQL 数据库
Import data from CSV file to Amazon Web Services RDS MySQL database
我创建了一个托管在 Amazon Web Services 上的关系数据库 (MySQL)。接下来我想做的是,将我本地 CSV 文件中的数据导入到这个数据库中。如果有人向我提供有关如何进行 it.Thanks!
的大纲,我将不胜感激
我认为你最好的选择是用你选择的语言开发一个脚本来连接到数据库并导入它。
如果您的数据库可以通过互联网访问,那么您可以在本地运行 该脚本。如果它在私有子网中,那么您可以 运行 在可以访问私有子网的 EC2 实例上或在连接到您的 VPC 的 lambda 上运行该脚本。如果您希望 运行时间少于 5 分钟左右,您真的应该只使用 lambda。
编辑:请注意,lambda 仅支持少数几种语言
AWS Lambda supports code written in Node.js (JavaScript), Python, Java
(Java 8 compatible), and C# (.NET Core).
使用 MySQL 命令行,这是最简单也是最 hands-off 的方法。对于大负载,考虑启动一个新的 EC2 实例,安装 MySQL CL 工具,然后将文件传输到该机器。然后,在通过 CL 连接到您的数据库后,您将执行如下操作:
mysql> LOAD DATA LOCAL INFILE 'C:/upload.csv' INTO TABLE myTable;
还有一些选项可以匹配您的文件的详细信息并忽略 header(文档中有更多内容)
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-compatible 所以命令也在那里工作
- "LOCAL" 标志实际上将文件从您的客户端计算机(您是 运行 命令的位置)传输到数据库服务器。如果没有 LOCAL,文件必须在数据库服务器上(无法使用 RDS 提前将其传输到那里)
- 对大文件也很有效!刚刚通过这种方法发送了一个 8.2GB 的文件(2.6 亿行)。从 t2-medium EC2 到 db.t2.small Aurora
只用了 10 多个小时
- 如果您需要注意唯一键或读取 CSV row-by-row 并在 inserting/updating
之前更改数据,则不是解决方案
我进行了一些挖掘,发现了这个关于如何将数据从任何来源导入到 MySQL 托管在 RDS 上的官方 AWS 文档。
这是一个非常详细的分步指南,包括有关如何导入 CSV 文件的说明。
http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.Procedural.Importing.AnySource.html
基本上,每个table都必须有自己的文件。多个 table 的数据不能合并到同一个文件中。为每个文件指定与其对应的 table 相同的名称。文件扩展名可以是任何你喜欢的。例如,如果 table 名称是 "sales",则文件名可以是 "sales.csv" 或 "sales.txt",但不能是 "sales_01.csv".
尽可能按正在加载的 table 的主键对数据进行排序。这大大缩短了加载时间并最大限度地减少了磁盘存储要求。
还有一个选择import data to MySQL database,你可以使用可以实时为你导入数据的外部工具Alooma。
取决于您的文件有多大,但如果小于 1GB,我发现 DataGrip 可以毫无问题地导入较小的文件:https://www.jetbrains.com/datagrip/
你会得到很好的地图工具和图形 IDE 来玩。 DataGrip 可免费试用 30 天。
我在处理大于 2GB 的较大文件时遇到 RDS 连接断开问题。不确定是关于 DataGrip 还是 AWS 方面。
我创建了一个托管在 Amazon Web Services 上的关系数据库 (MySQL)。接下来我想做的是,将我本地 CSV 文件中的数据导入到这个数据库中。如果有人向我提供有关如何进行 it.Thanks!
的大纲,我将不胜感激我认为你最好的选择是用你选择的语言开发一个脚本来连接到数据库并导入它。
如果您的数据库可以通过互联网访问,那么您可以在本地运行 该脚本。如果它在私有子网中,那么您可以 运行 在可以访问私有子网的 EC2 实例上或在连接到您的 VPC 的 lambda 上运行该脚本。如果您希望 运行时间少于 5 分钟左右,您真的应该只使用 lambda。
编辑:请注意,lambda 仅支持少数几种语言
AWS Lambda supports code written in Node.js (JavaScript), Python, Java (Java 8 compatible), and C# (.NET Core).
使用 MySQL 命令行,这是最简单也是最 hands-off 的方法。对于大负载,考虑启动一个新的 EC2 实例,安装 MySQL CL 工具,然后将文件传输到该机器。然后,在通过 CL 连接到您的数据库后,您将执行如下操作:
mysql> LOAD DATA LOCAL INFILE 'C:/upload.csv' INTO TABLE myTable;
还有一些选项可以匹配您的文件的详细信息并忽略 header(文档中有更多内容)
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-compatible 所以命令也在那里工作
- "LOCAL" 标志实际上将文件从您的客户端计算机(您是 运行 命令的位置)传输到数据库服务器。如果没有 LOCAL,文件必须在数据库服务器上(无法使用 RDS 提前将其传输到那里)
- 对大文件也很有效!刚刚通过这种方法发送了一个 8.2GB 的文件(2.6 亿行)。从 t2-medium EC2 到 db.t2.small Aurora 只用了 10 多个小时
- 如果您需要注意唯一键或读取 CSV row-by-row 并在 inserting/updating 之前更改数据,则不是解决方案
我进行了一些挖掘,发现了这个关于如何将数据从任何来源导入到 MySQL 托管在 RDS 上的官方 AWS 文档。
这是一个非常详细的分步指南,包括有关如何导入 CSV 文件的说明。
http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.Procedural.Importing.AnySource.html
基本上,每个table都必须有自己的文件。多个 table 的数据不能合并到同一个文件中。为每个文件指定与其对应的 table 相同的名称。文件扩展名可以是任何你喜欢的。例如,如果 table 名称是 "sales",则文件名可以是 "sales.csv" 或 "sales.txt",但不能是 "sales_01.csv".
尽可能按正在加载的 table 的主键对数据进行排序。这大大缩短了加载时间并最大限度地减少了磁盘存储要求。
还有一个选择import data to MySQL database,你可以使用可以实时为你导入数据的外部工具Alooma。
取决于您的文件有多大,但如果小于 1GB,我发现 DataGrip 可以毫无问题地导入较小的文件:https://www.jetbrains.com/datagrip/ 你会得到很好的地图工具和图形 IDE 来玩。 DataGrip 可免费试用 30 天。
我在处理大于 2GB 的较大文件时遇到 RDS 连接断开问题。不确定是关于 DataGrip 还是 AWS 方面。