【问题标题】:Bash script to dump mysql view into csv将 mysql 视图转储到 csv 的 Bash 脚本
【发布时间】:2012-11-16 12:05:03
【问题描述】:

我正在尝试使用 bash 脚本将 MYSQL 视图的输出转储到 CSV。

作为灵感,我使用了这篇文章:How to use a bash script to write to a mysql table

奇怪的是 SELECT column1,column2,column3 FROM 语法可以正常工作,但是当你有大约 15 列时它不实用......

SELECT count(*) FROM 也有效

但是 SELECT * FROM 抛出一个 MYSQL 语法错误

#!/bin/bash

fpath=/tmp/
fname=`date +%Y%m%d-%H%M%S`.csv
savedest=\'$fpath$fname\'

echo "Saving into"$savedest

params="-u root -p mydb"
 s1="SELECT * FROM flat_view INTO OUTFILE "
s2=" FIELDS TERMINATED BY ','"
s3=" ENCLOSED BY '\"'"
s4=" LINES TERMINATED BY '\\n'"
selectend=";"

echo $s1$savedest$s2$s3$s4$selectend | mysql $params

我认为我没有正确地逃脱一些东西。

PS。这是 Centos 5.8 和 mysql Ver 14.12 Distrib 5.0.95

【问题讨论】:

    标签: mysql bash scripting centos


    【解决方案1】:

    在输入问题时,我决定再尝试一件事来搞笑:

    s1="SELECT flat_view.* FROM flat_view INTO OUTFILE "
    

    它成功了!

    我在阅读 MySQL 文档时发现 SELECT * 可能存在歧义:http://dev.mysql.com/doc/refman/5.5/en/select.html

    不过,奇怪的是 SELECT * FROM 在 mysql 命令行中运行良好,但在 bash 脚本中却不行。

    【讨论】:

    • 您没有引用“echo”参数,因此在运行脚本时* 将扩展到$PWD 中的每个文件。比较 shell 上的 echo select foo.*echo select *
    • 谢谢,这正是发生的事情。
    猜你喜欢
    • 2016-07-10
    • 2012-04-09
    • 2014-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多