【问题标题】:Help with MySQL (.sql) and Shell ScriptMySQL (.sql) 和 Shell 脚本的帮助
【发布时间】:2011-02-18 05:42:15
【问题描述】:

如何在 .sql 文件中调用以下内容?

mysql -u username -h serverip db -e "select a, b, c, d from mytable" > '/home/dump/result.txt';

然后我必须将制表符分隔的文件转换为我想要使用 sed 的 csv。

  1. 有没有一种方法可以一次性完成所有操作 线? (附加 sed 命令进行转换 .txt 文件到 csv)
  2. 如何使用 .sql 文件中的 os.system 调用?会吗 工作?

【问题讨论】:

    标签: mysql shell scripting sed os.system


    【解决方案1】:

    如何通过mysql 控制台客户端运行此查询:

    SELECT ... FROM ... INTO OUTFILE  '/path/to/file.csv' 
    FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY "\n"
    

    【讨论】:

    • 我没有这个选项,因为客户端服务器和数据库服务器不同。谢谢!
    【解决方案2】:

    试试这个:

    mysql --batch --skip-column-names -u username -h serverip db \
      -e "select a, b, c, d from mytable" \
      | sed -e 's/\t/,/g' \
      > '/home/dump/result.txt'
    

    有关更多信息,请参阅 --batch--skip-column-names 的文档。

    【讨论】:

    • 谢谢比尔。我们正在从数据库服务器和客户端相同的场景迁移到两者的单独服务器。我有一堆 .sql 文件,其中 select into outfile 查询不再起作用。有没有办法在 .sql 文件本身中执行您的解决方案?
    • mysql 客户端没有任何选项可以直接输出到 CSV。您必须将 sed 命令添加到调用 mysql 客户端的脚本中。
    猜你喜欢
    • 1970-01-01
    • 2011-06-11
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    • 2018-05-16
    • 1970-01-01
    • 2011-12-12
    • 1970-01-01
    相关资源
    最近更新 更多