CSV to SQL コンバーター

CSV データを貼り付けると、PostgreSQL、MySQL、SQLite、SQL Server 対応の実行可能な INSERT ステートメントが生成されます。バッチ挿入、オプションの CREATE TABLE、カスタムデリミタに対応。すべてブラウザ内で処理されます。

動作方法: CSV を貼り付けて、データベース方言とテーブル名を選択すると、SQL が生成されます。バッチサイズは 1 つの INSERT に含める行数を制御します。プレビューテーブルは最初の 5 行を表示するため、SQL をコピーする前にパース結果を確認できます。データはサーバーに送信されません。

4 × 5
INSERT INTO "my_table" ("id", "name", "email", "age", "active") VALUES
  (1, 'Alice Johnson', 'alice@example.com', 28, TRUE),
  (2, 'Bob Smith', 'bob@example.com', 34, FALSE),
  (3, 'Carol Lee', 'carol@example.com', 22, TRUE),
  (4, 'David Kim', 'david@example.com', 45, TRUE);
idnameemailageactive
1Alice Johnsonalice@example.com28true
2Bob Smithbob@example.com34false
3Carol Leecarol@example.com22true
4David Kimdavid@example.com45true

CSV to SQL コンバーターとは?

CSV to SQL コンバーターはカンマ区切り値(またはその他のデリミタ)を読み込んで、その データをリレーショナルデータベースに読み込む SQL INSERT ステートメントを生成します。INSERT 行を手作業で何十行も書く代わりに、スプレッドシート エクスポートを貼り付けると、本番環境対応の SQL が数秒で得られます。このツールは 4 つの主要データベース方言に対応しています。PostgreSQL、MySQL、SQLite、SQL Server のそれぞれはクォート規則、boolean 処理、構文が異なります。値は自動的に数値、boolean、NULL、または文字列として検出され、文字列値は SQL インジェクションを防ぐために適切にエスケープされます。

INSERT ステートメントを理解する

標準的な INSERT 構文は INSERT INTO table_name (col1, col2) VALUES (val1, val2) です。このツールはデフォルトでは 1 行につき 1 ステートメントを生成します。これは最も安全で移植性の高いアプローチです。各列識別子は選択されたデータベース方言に従ってクォートされます。MySQL ではバッククォート、SQL Server では角括弧、PostgreSQL と SQLite ではダブルクォートを使用します。文字列値はシングルクォートを使用し、内部のシングルクォートは 2 倍化されます(標準的な SQL エスケープ方法)。数値は引用符なしで記述され、空のセルまたはリテラルテキスト 'null' を含むセルは SQL NULL キーワードに変換されます。

バッチ挿入とパフォーマンス

数千行を挿入する場合、個別の INSERT ステートメントは低速です。個別の INSERT ステートメントはそれぞれがデータベースへの個別のラウンドトリップを必要とするためです。バッチ挿入は複数行を 1 つのステートメントにグループ化します。INSERT INTO t (a, b) VALUES (1, 2), (3, 4), (5, 6) のように記述することで、ネットワークオーバーヘッドとトランザクション数を大幅に削減できます。このコンバーターではバッチサイズを 1(ステートメントあたり 1 行)、50、100、500、または 1000 行から選択できます。バッチサイズ 100 はほとんどのデータベースの安全なデフォルトです。SQL Server は同じ方法で複数行 VALUES 構文に対応していないため、このデータベース方言ではバッチ処理は自動的に無効化されます。

信頼性の高い CSV インポートのヒント

  • 最初の行が必ずヘッダーであることを確認してください — 列名は SQL 識別子になります
  • CSV がセミコロン(ヨーロッパのロケールで一般的)またはタブを使用している場合は、デリミタセレクターを使用してください
  • 'CREATE TABLE を含める' を有効化すると、INSERT と共にテーブル定義が得られます
  • SQL をコピーする前にプレビューテーブルを確認してパースエラーをキャッチしてください
  • 大きなファイルの場合は、インポート時間を短縮するためにバッチサイズ 500~1000 を使用してください
  • インポートをトランザクション内で実行し(BEGIN / COMMIT)、エラー時にロールバックできるようにしてください