MySQLDump各データ行に対して1つのINSERTステートメント


178

次のステートメントで:

mysqldump --complete-insert --lock-all-tables --no-create-db 
--no-create-info --extended-insert --password=XXX -u XXX 
--dump-date yyy > yyy_dataOnly.sql

次のようなINSERTステートメントを取得します。

INSERT INTO `table` VALUES (1,'something'),(2,'anything'),(3,'everything');

私の場合に必要なのは次のようなものです:

INSERT INTO `table` VALUES (1,'something');
INSERT INTO `table` VALUES (2,'anything');
INSERT INTO `table` VALUES (3,'everything');

各行に新しいINSERTステートメントを作成するように「mysqldump」に指示する方法はありますか?ご協力いただきありがとうございます!

回答:


277

使用する:

mysqldump --extended-insert=FALSE 

複数の挿入は、1つの大きな挿入よりも遅くなることに注意してください。


75
--skip-extended-insertが正しい構文であるように見えます(mysqldumpバージョン10.13を使用)
Isaac Betesh

17
遅くなりますが、多くのテキストエディターでは、非常に長いテキスト行に問題があり、テーブルに大量のデータがある場合、それが起こります。
Jahmic 2013

mysqldump --opt --skip-extended-insertまたはmysqldump --opt --extended-insert=FALSE仕事
Yzmir Ramirez 2016

ああ、神様!新しいバージョンに移行したため、この問題が発生し、自動スクリプトの多くが失敗しました。私はねじ込まれていると思いましたが、これは簡単な修正のようです。共有してくれてありがとう!
Varun Verma 2017

11
これでgit diff、2つの異なるデータベースダンプを実行して、何が変更されたかを明確に把握できるようになります。
Rolf

9

新しいバージョンでは、フラグが変更されました:ドキュメントから:

--extended-insert、-e

複数のVALUESリストを含む複数行の構文を使用してINSERTステートメントを記述します。これにより、ダンプファイルが小さくなり、ファイルが再ロードされるときに挿入が高速化されます。

--opt

このオプションはデフォルトで有効になっており、--add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick-の組み合わせの省略形ですセット文字セット。これは、高速のダンプ操作を提供し、MySQLサーバーにすばやくリロードできるダンプファイルを生成します。

--optオプションはデフォルトで有効になっているため、その逆、つまり--skip-optを指定するだけで、いくつかのデフォルト設定がオフになります。--optの影響を受けるオプションのサブセットを選択的に有効または無効にする方法については、mysqldumpオプショングループの説明を参照してください。

--skip-extended-insert

拡張挿入をオフにする

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.