データダンプ&ロード

テストのためにデータをコピーして、別テーブルにロードしたいなんてことがよくあります。
そんな時に使う方法。

テーブル丸ごとコピーしたい

素直にmysqldumpを使います。

mysqldump -h[host] -u[user] [database] [table1] [table2] > ~/dumpfile
  • データのみダンプ
mysqldump -h[host] -u[user] -t [database] [table1] [table2] > ~/dumpfile
  • ロードする
cat ~/dumpfile | mysql -h[host] -u[user] [databese]
テーブル丸ごとコピーしたい(同一DBで使える手)
  • スキーマコピー
create table [new_table] like [table];
  • データコピー
insert into [new_table] select * from [table];
テーブルの一部データをコピーしたい

tsvで出力してロードする方法を使います。

  • ファイルに出力する
echo "select * from table limit 10;" | mysql -h*** -u*** database > ~/data.tsv
  • ロードする
mysql -h[host] -u[user] [databese]
load data local infile "~/data.tsv" into table [db.table];