WEBアプリケーション研究室 開発ノート TOP

WEBアプリケーション研究室 開発ノート [MySQL]SELECTの結果をCSV出力する

スポンサーサイト

-------- --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

    このエントリーをはてなブックマークに追加

ネットで探すと、結構エントリーを見つけるのですが、意外に手こずったので載せておきます。

まずCSVで書きだすSQLですが


SELECT * INTO OUTFILE "file.csv" FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' FROM table;
こんな感じです。で実行してみたら
Access denied for user 'user'@'localhost'
とでました。あれ?ログインしてるのに・・・と調べてみるとAccess denied エラーの原因
「MySQL サーバに接続はできるけれども、SELECT ... INTO OUTFILE または LOAD DATA INFILE を発行すると、Access denied が出る場合は、user テーブルのエントリで、FILE 権限がないことを意味します。」
と発見。なるほどと思い

GRANT file ON db_name.* TO 'user'@'localhost';
と実行してみる、今度は
Incorrect usage of DB GRANT and GLOBAL PRIVILEGES
というエラーが。FILE権限はDB単位に与えるものではなくGlobalな権限なので

GRANT file ON *.* TO 'user'@'localhost';
と実行する必要があります。

また、当然ですが、書き出しはmysqlユーザーで行われますので、書き出し先にmysqlが書き込める必要があります。
スポンサーサイト

    このエントリーをはてなブックマークに追加
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。