我正在尝试从具有大约 1300 万个条目的远程主机的一个非常大的表中获取所有数据到一个文本文件中。我尝试了以下命令,但一段时间后进程被杀死并显示一条名为“Killed”的消息。在控制台中。
mysql --user=username --password -h host -e "select * from db.table_name" >> output_file.txt
我的主要目标是将数据从 mysql 复制到 redshift,我通过获取所有数据以“,”分隔的 int 文本文件将其上传到 s3 并在 redshift 上执行COPY
查询。
PS 对于小表,上述命令正常工作,但不适用于大表。
问问题
123 次
1 回答
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
于 2013-11-25T10:03:27.187 回答