从非常大的表中导出逗号分隔的数据

时间:2013-11-25 09:51:52

标签: mysql mysqldump amazon-redshift

我正在尝试将一个非常大的表中的所有数据从具有大约1300万条目的远程主机中获取到文本文件中。我尝试了以下命令但是在某个时间进程被杀死并显示一条名为“Killed”的消息。在控制台中。
mysql --user=username --password -h host -e "select * from db.table_name" >> output_file.txt
我的主要目标是将数据从mysql复制到redshift,我通过将所有数据用“,”分隔为一个文本文件,在s3上传并在redshift上执行COPY查询。 P.S对于小表,上面的命令工作正常但不适用于大表。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用mysqldump。如果我没记错的话,它可以参数化为输出CSV。我自己没有尝试过,所以你可能想查看文档,但这应该有效:

mysqldump --user=username --password -h host \
--fields-terminated-by="," --fields-enclosed-by="\"" --lines-terminated-by="\n" \
dbname tablename > output_file.txt 

如果这不起作用,您可以尝试SELECT INTO OUTFILE。你需要直接在MySQL主机上这样做:

SELECT * INTO OUTFILE '/tmp/data.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\\' LINES TERMINATED BY '\n'
FROM db.table_name