我希望能够在 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/