CSV由来のJSONをSQL INSERT文に変換する
CSVファイルから変換されたJSONデータをSQL INSERT文に変換する方法を学びます。ヘッダーベースのカラムマッピング、型変換、空文字列の処理、大規模ファイルのチャンキングを解説します。
Real-World Scenarios
詳細な説明
CSV由来のJSONからSQLへ
CSV変換で生成されたJSONデータには独特の特徴があります:すべての値が文字列である可能性があり、ヘッダーがキーになり、空セルが空文字列またはnullになります。正確なSQL変換には特別な処理が必要です。
JSONの例(CSV由来)
[
{ "id": "1", "name": "Alice", "age": "30", "salary": "75000.50", "active": "true", "notes": "" },
{ "id": "2", "name": "Bob", "age": "25", "salary": "62000.00", "active": "false", "notes": "new hire" }
]
数値やブール値を含め、すべての値が文字列であることに注意してください。これはCSV由来の特徴的な兆候です。
型変換
コンバーターは値を検出し、適切なSQL型にキャストすべきです:
INSERT INTO employees (id, name, age, salary, active, notes) VALUES
(1, 'Alice', 30, 75000.50, TRUE, NULL),
(2, 'Bob', 25, 62000.00, FALSE, 'new hire');
型検出ルール
| 文字列パターン | 推論される型 |
|---|---|
"123"(全桁数字) |
INTEGER |
"123.45"(ドット付き数字) |
DECIMAL / FLOAT |
"true" / "false" |
BOOLEAN |
""(空文字列) |
NULL |
"2024-06-15"(日付パターン) |
DATE |
| その他すべて | VARCHAR / TEXT |
空文字列の処理
CSVエクスポートでは欠落データを空文字列で表すことが多いです。コンバーターはオプションを提供すべきです:
- NULLに変換(ほとんどのデータベースで推奨)
- 空文字列のまま保持(空が意味を持つVARCHARカラム用)
ヘッダーの正規化
CSVヘッダーにはスペース、特殊文字、大文字小文字の混在が含まれることが多いです:
| CSVヘッダー | 正規化されたカラム名 |
|---|---|
"Full Name" |
full_name |
"E-mail Address" |
email_address |
"#ID" |
id |
"Total ($)" |
total_usd |
大規模ファイルのチャンキング
CSVファイルは非常に大きくなる可能性があります。コンバーターはJSON配列をチャンクに分割します:
-- チャンク1(行1-1000)
INSERT INTO employees (...) VALUES (...), (...), ...;
-- チャンク2(行1001-2000)
INSERT INTO employees (...) VALUES (...), (...), ...;
パイプライン:CSV -> JSON -> SQL
この2段階変換は、JSONがCSVよりもプログラム的に操作しやすいため一般的です。jq、Pythonのjsonモジュール、またはDevToolboxのCSV-to-JSONコンバーターが最初のステップを処理します。JSON-to-SQLコンバーターが2番目のステップを処理します。
ユースケース
ビジネスツール(Excel、Google Sheets、レガシーシステム)からCSVとしてエクスポートされたデータを受け取る際、JSONを経由してSQLに変換することでデータベースインポートの信頼性の高いパイプラインが提供されます。これはソースシステムがCSVエクスポートのみをサポートするデータ移行プロジェクトで一般的です。