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で一部分のデータのみダンプする方法を参照。
[...] MySQLの場合は、MySQLでコマンドから直接クエリを実行し、CSVファイルに保存するを参照。 AKPC_IDS += "269,"; §269 · 12月 21, 2010 · 技術その他 · · [Print] [...]
初めまして。記事拝見させていただきました。
シェルでワンライナー。ですが、その逆をしたい場合にこまっております。
書き出したものをワンライナーでimportする方法をご存じでしたら
ご指導いただけないでしょうか?
書きだしたSQLを実行するには
$mysql database_name < hoge.sql
これでデータベースを指定してSQLファイルを実行できます。
こんばんわです。
ご指導ありがとうございます。
せっかく教えていただいたのですが、SQLではなくCSVで書き出したものをMYSQLに戻したくおもいました。
一度MYSQLに入ってDBをuseしてからだと戻せるのですが、上記のように
ログインから一発でDBに書き戻す方法が無いかとおもいまして。
そんな方法、ご存じでしょうか?
現在はdelphiでログインしてから書き戻しているのですが、コマンドライン
でできるともっと効率良く使えるかとおもいまして。
なるほど。CSVファイルの場合は、loadを使えばいけそうですね。
試したことはないですが、たぶんこれでいけると思います。
load data local infile “hoge.csv” into table table_name fields terminated by ‘,’ ENCLOSED BY ‘”‘;