mysql - 将数据从 s3 加载到运行 EC2 实例(不是 RDS)的 mySQL

标签 mysql amazon-web-services amazon-s3

我希望能够在 mySQL 中使用 load data infile 命令,但我不想从本地文件加载数据,而是想从 CSV 文件加载它。

即,如果文件在本地存储中,它看起来像:

LOAD DATA INFILE'C:\\abc.csv' INTO TABLE abc

但如果它在 S3 中,我不确定我怎么能做这样的事情。

这可能吗?

注意:这不是 RDS 机器,所以这个命令似乎不起作用: http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-template-copys3tords.html

最佳答案

mysql CLI 允许您将 STDIN 作为 SQL 语句流执行。

结合使用 s3 CLI 和 mkfifo,您可以从 s3 流出数据。

然后将流与将 CSV 重新格式化为有效 SQL 的内容连接起来就是一件简单的事情。

mkfifo /tmp/mypipe
s3 cp s3://your/s3/object /tmp/mypipe
python transform_csv_to_sql.py < /tmp/mypipe | mysql target_database

如果您告诉 MySQL 直接从您的 fifo 加载数据,您也许可以删除 python 步骤并使用 MySQL 的 CSV 代码:

mkfifo /tmp/mypipe
s3 cp s3://your/s3/object /tmp/mypipe
mysql target_database --execute "LOAD DATA INFILE '/tmp/mypipe'"

祝你好运!

关于mysql - 将数据从 s3 加载到运行 EC2 实例(不是 RDS)的 mySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45599794/

相关文章:

amazon-web-services - 复制的 Redshift 回滚

java - 如何使用本地系统上运行的 Spring Boot 应用程序连接到 AWS 上的 DynamoDB?

json - Pyspark从S3存储桶的子目录中读取所有JSON文件

mysql - 问题: Joining two views in MySQL

MySQL 错误 1045 (28000) : Access denied for user 'bill' @'localhost' (using password: YES)

amazon-web-services - Amazon CloudFront 延迟

java - 如何使用 s3 select 从 Parquet 文件中获取所有列的列表?

node.js - 使用 Node js aws-sdk 检查 S3 上是否存在文件夹

javascript - 自动显示数据库中没有的日期的 0 销售额

sql - 在 MySQL 中更改列数据类型时如何保留数据?