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