データダンプ&ロード
テストのためにデータをコピーして、別テーブルにロードしたいなんてことがよくあります。
そんな時に使う方法。
テーブル丸ごとコピーしたい
素直に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];