代码之家  ›  专栏  ›  技术社区  ›  Blaine Lafreniere

mysql查询将输出作为csv打印到标准输出

  •  10
  • Blaine Lafreniere  · 技术社区  · 14 年前

    我想做以下事情 mysql -uuser -ppass -h remote.host.tld database < script.sql

    在哪里? script.sql 包含以下内容

    SELECT *
    FROM webrecord_wr25mfz_20101011_175524
    FIELDS TERMINATED BY ',' 
    ENCLOSED BY '"' 
    LINES TERMINATED BY '\n'
    

    我希望csv输出指向标准输出。原因是使用 INTO OUTFILE 'blah.csv' 将文件保存在远程主机上。我想把文件保存在本地主机上。

    如果我能将标准输出重定向到一个文件,那就太好了。

    1 回复  |  直到 13 年前
        1
  •  0
  •   700 Software    14 年前

    试试这个: mysql -uuser -ppass -h remote.host.tld database < script.sql 2> blah.csv

    这将重定向stderr

        2
  •  0
  •   double-beep hudson solomon    5 年前

    部分重复问题 MySQL SELECT INTO OUTFILE to a different server 是的。 FIELDS TERMINATED BY 不用就不能用 into outfile

    一个(不那么优雅的)替代方法是使用 --batch 选项以生成制表符分隔的输出并sedding stdout。像这样的:

    mysql --batch -uuser -ppass -h remote.host.tld database < stack.sql | sed 's/\t/,/g' > blah.csv
    

    请注意 --批量 转义特殊字符,因此根据您拥有的数据及其可预测性,您可能需要更改sed