2019-02-14
mysqldumpに`--complete-insert`オプションをつけるとカラム名を含むINSERT文を出力してくれる
mysqldumpコマンドのデフォルト状態で出力されるINSERT文にはカラム名の情報が含まれていない。以下例(※ 見やすいようにインデントしている)。
INSERT INTO
`users`
VALUES
(1,'taro',20,'male',1,'2019-02-13 23:44:02','2019-02-13 23:44:02'),
(2,'jiro',30,'male',1,'2019-02-13 23:44:11','2019-02-13 23:44:11')
;
dump元とrestore先で全く同じテーブル構成であれば特に問題はないが、例えばカラム名の順番がちょっと違っているような場合だとデータがズレた状態でINSERTされることになってしまう。
そのようなときは、--complete-insert
or -c
オプションをつけてmysqldumpを実行するとカラム名を含んだINSERT文を出力してくれるようになる。
INSERT INTO
`users` (`id`, `name`, `age`, `sex`, `premium`, `created_at`, `updated_at`)
VALUES
(1,'taro',20,'male',1,'2019-02-13 23:44:02','2019-02-13 23:44:02'),
(2,'jiro',30,'male',1,'2019-02-13 23:44:11','2019-02-13 23:44:11')
;
ちなみにmysqldumpのmanを見るとそのままのことが書かれている
o --complete-insert, -c
Use complete INSERT statements that include column names.
次の記事 >>Rubyの`&&`と`||`