複数のINSERT文を1つのCSVに統合する
同じテーブルを対象とする複数の個別INSERT INTO文の行を、統一されたヘッダーを持つ単一のCSV出力に結合します。
Basic Extraction
詳細な説明
個別のINSERT文の統合
データベースエクスポートやシードファイルには、単一の複数行インサートではなく、同じテーブルに対する複数のINSERT INTO文が含まれていることがよくあります。これはツールが行のバッチごとに1つのINSERTを生成する場合や、データが段階的に追加される場合によく発生します。
SQLの例
CREATE TABLE employees (
id INTEGER PRIMARY KEY,
name VARCHAR(100),
department VARCHAR(50),
salary DECIMAL(10,2)
);
INSERT INTO employees (id, name, department, salary)
VALUES (1, 'Alice', 'Engineering', 95000.00);
INSERT INTO employees (id, name, department, salary)
VALUES (2, 'Bob', 'Marketing', 82000.00);
INSERT INTO employees (id, name, department, salary)
VALUES (3, 'Charlie', 'Engineering', 105000.00);
生成されるCSV
id,name,department,salary
1,Alice,Engineering,95000.00
2,Bob,Marketing,82000.00
3,Charlie,Engineering,105000.00
統合の仕組み
ツールはすべてのINSERT INTO文を順番に処理します。同じテーブルを対象とする複数の文がある場合:
- カラム名は最初の
INSERTまたはCREATE TABLE定義によって決定されます - 後続のすべての
INSERT行は同じ結果セットに追加されます - 後のINSERTで以前に見られなかった新しいカラムが導入された場合、カラムリストに追加されます
- 新しく追加されたカラムの値がない行は空文字列になります
これにより、断片化されたデータベースエクスポートを手動編集なしで単一のクリーンなCSVファイルに統合できます。
ユースケース
mysqldumpの--skip-extended-insertオプションのように、各レコードに対して個別のINSERT文を出力するツールからの断片化されたデータベースエクスポートファイルの統合。