LoginSignup
7
6

More than 3 years have passed since last update.

【MySQL】CSVインポート CSVエクスポート mysqldump

Posted at

MySQLで、

  • CSVインポート
  • CSVエクスポート
  • mysqldump(書き出し)
  • mysqldump(読み込み)

のコマンド、たまに使うけど毎回「なんだっけ、、?」となる上に、同時に叩くことが多いので、一箇所に集約

CSVのインポート

load data local infile "ファイル名"
into table テーブル名 
fields terminated by '区切り文字'
optionally enclosed by '囲み文字'
(column1, column2);   # 読み込みたいカラム名

以下のようなエラーが出て失敗する場合は、

ERROR 1148: The used command is not allowed with this MySQL version

--local-infile=1をつけてmysqlクライアントを起動すればいい
(参考:MySQL :: MySQL 5.6 リファレンスマニュアル :: 6.1.6 LOAD DATA LOCAL のセキュリティーの問題

CSVのエクスポート

select フィールド名
from テーブル名 
into outfile ’出力したいファイル名’ 
fields terminated by '区切り文字'
optionally enclosed by '囲み文字';

以下のようなエラーが出て失敗する場合は、

ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

ローカルのmysqlとかならば以下のような対処で
[ MySQL ] データをCSVでエクスポートしようとして、secure-file-privに引っかかった件 - Qiita

mysqldump(書き出し)

mysqldumpの出力結果は、結局のところそのデータベースやテーブルの状態を再現するための「SQL文」であることを念頭に置く。
オプションは適宜調べる。
よく使うのは、-d:定義のみのdump、-t:テーブル作成しない、-n:DB作成しない、だろうか。

すべてのDBをdump

mysqldump -u USER_NAME -p -h HOST_NAME -A -n > OUTPUT_FILE_NAME

DBを指定してdump

mysqldump -u USER_NAME -p -h HOST_NAME DB_NAME1 > OUTPUT_FILE_NAME

複数DB指定したい場合は以下のように(-Bオプション)

mysqldump -u USER_NAME -p -h HOST_NAME -B DB_NAME1 [DB_NAME2 ...] > OUTPUT_FILE_NAME

テーブルを指定してdump

mysqldump -u USER_NAME -p -h HOST_NAME DB_NAME TABLE_NAME > OUTPUT_FILE_NAME

複数テーブル指定したい場合は以下のように

mysqldump -u USER_NAME -p -h HOST_NAME DB_NAME TABLE_NAME1 [TABLE_NAME2 ...] > OUTPUT_FILE_NAME

mysqldump(読み込み)

bashからmysqlコマンドで

mysql -u USER_NAME -p -h HOST_NAME DB_NAME < OUTPUT_FILE_NAME

mysqlクライアントが起動している状態でsource

mysqlクライアントをすでに立ち上げている場合だとこっちも便利

mysql> source OUTPUT_FILE_NAME;

TODO

たいてい毎回こういうコマンドをコピペして微妙に書き換えて実行するので、タイポしたりして失敗してフラストレーション溜まる…
DB名とかテーブル名とか入力させる対話式のシェルスクリプト作るのもありかも。

参考

mysqldumpまとめ - Qiita
【MySQL】CSVファイルをインポートするコマンド - Qiita

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6