Web系のこととかー。

mysqlコマンドを実行して、中にはいってからSQLを実行しても良いんだけど、ちょっとした事だったら面倒くさいし、シェルでワンライナーでいけるならそっちのが良いっていうときには -eオプションを使うと直接クエリを実行することができる。

$mysql -u root DBNAME -e "クエリ"

これと、 into outfile を併用することでテーブルの中身をCSVファイルとして書き出すことができる。

$mysql -u root DBNAME -e
"select * from table into outfile '/tmp/output.csv'
fields terminated by ',' enclosed by '\"'"

PostgreSQLの場合は、PostgreSQLで一部分のデータのみダンプする方法を参照。

§273 · 1月 4, 2011 · MySQL_PostgreSQL · · [Print]

5 Comments to “MySQLでコマンドから直接クエリを実行し、CSVファイルに保存する”

  1. [...] MySQLの場合は、MySQLでコマンドから直接クエリを実行し、CSVファイルに保存するを参照。 AKPC_IDS += "269,"; §269 · 12月 21, 2010 · 技術その他 · · [Print] [...]

  2. かー より:

    初めまして。記事拝見させていただきました。
    シェルでワンライナー。ですが、その逆をしたい場合にこまっております。

    書き出したものをワンライナーでimportする方法をご存じでしたら
    ご指導いただけないでしょうか?

  3. zaru より:

    書きだしたSQLを実行するには

    $mysql database_name < hoge.sql

    これでデータベースを指定してSQLファイルを実行できます。

  4. かー より:

    こんばんわです。
    ご指導ありがとうございます。

    せっかく教えていただいたのですが、SQLではなくCSVで書き出したものをMYSQLに戻したくおもいました。

    一度MYSQLに入ってDBをuseしてからだと戻せるのですが、上記のように
    ログインから一発でDBに書き戻す方法が無いかとおもいまして。

    そんな方法、ご存じでしょうか?
    現在はdelphiでログインしてから書き戻しているのですが、コマンドライン
    でできるともっと効率良く使えるかとおもいまして。

  5. zaru より:

    なるほど。CSVファイルの場合は、loadを使えばいけそうですね。

    試したことはないですが、たぶんこれでいけると思います。
    load data local infile “hoge.csv” into table table_name fields terminated by ‘,’ ENCLOSED BY ‘”‘;

Leave a Reply