0

我正在尝试使用 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

4

1 回答 1

0

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

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

它奏效了!

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

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

于 2012-11-28T15:25:22.133 回答