0

bashスクリプトを使用して、MYSQLビューからの出力をCSVにダンプしようとしています。

インスピレーションとして、私はこの投稿を使用しました:mysqlテーブルに書き込むためにbashスクリプトを使用する方法

奇妙な部分は、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。これはCentos5.8およびmysqlVer14.12Distrib5.0.95です。

4

1 に答える 1

0

質問を入力している間、私は笑いのためにもう1つ試してみることにしました。

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 に答える