【问题标题】:Exporting comma delimited data from a very large table从非常大的表中导出逗号分隔的数据
【发布时间】:2013-11-25 09:51:51
【问题描述】:

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

【问题讨论】:

    标签: mysql mysqldump amazon-redshift


    【解决方案1】:

    你可以试试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
    

    【讨论】:

    • 如果您可以提供导出到 csv 文件的第一个选项的命令将非常有帮助。我无法访问数据库以外的文件,所以第二个选项不会有太大帮助。
    猜你喜欢
    • 2022-09-29
    • 2010-11-17
    • 1970-01-01
    • 2012-04-11
    • 2016-02-03
    • 2016-12-28
    • 2022-01-17
    • 2020-02-13
    • 1970-01-01
    相关资源
    最近更新 更多