MySQL ダンプデータから行単位の抜き出し

間違えて削除した行を復旧するため、ダンプのバックアップデータから特定の行を抜き出すことになった。

条件が簡単なら、mysqldumpだけでもできる。

必要ならダンプデータを別環境にインポートし、
mysqldump -t -u user –where “xxx = xxx” database_name table_name > dump.sql

そして、書き出したファイルをインポート。

***

今回は子テーブルも削除されていてSQLを使いたいので、新しいテーブルにデータをコピーしそのテーブルを書き出すことに。

・(必要なら)ダンプデータを別環境にインポート

・スキーマコピー
create table AA like A

・データコピー
insert into AA select * from A where exists (
select * from B where A.ID = B.ID);
このような感じ(AテーブルをAAテーブルに書き出す時、Bテーブルに特定の値が含まれているかどうか)

・データ書き出し
mysqldump -t -u user database_name tmp_tbl > dump.sql
(Workbenchなら、Server>DataExportから)

・書き出したファイルでテーブル名などを修正してインポート。