CSVツール

CSV → SQL INSERT文 生成ツール

CSVデータをSQLのINSERT文へ変換します。テーブル名・SQL方言を指定するだけで、開発・テスト用のINSERT文を生成できます。

入力データはサーバーへ送信されませんインストール不要無料で使えます

1〜10,000(目安)

生成されたSQLは、アプリケーションでユーザー入力を安全に扱うための prepared statement(プレースホルダ)・parameterized query の代替ではありません。本ツールはSQLインジェクション対策を目的としたものではなく、入力いただいたテーブル名・列名・値を、選択した方言のルールに従って文字列として組み立てるだけです。実行前に内容をご確認のうえ、可能であればテスト環境またはトランザクション内で先に実行結果をご確認ください。

CSVファイルをここにドラッグ&ドロップ

または、ファイルを選択してください

対応形式: .csv(最大サイズの制限はありません)

結果

CSVを読み込んでください。

このツールでできること

CSV → SQL INSERT生成の主な機能です。

  • CSVからSQLのINSERT文を一括生成できます
  • 6種類のSQL方言から選べます標準SQL・MySQL/MariaDB・PostgreSQL・SQLite・SQL Server・Oracle
  • テーブル名・列名を安全に引用符付き識別子として出力します
  • まとめてINSERT・1行ずつINSERTを選べます
  • ファイル・テキスト貼り付けのどちらでも入力できます
  • 生成結果をワンクリックでコピーできます

使い方

CSVからINSERT文を生成する手順を説明します。

手順を見る
  1. テーブル名を入力します既定は table_name です
  2. CSVをファイルまたはテキストで読み込みます1行目は列名として扱います
  3. SQL方言・オプションを選びます
  4. 「INSERT文を生成」を押します
  5. 結果を確認し、「コピー」でクリップボードへコピーします

こんなときに使えます

こんな場面でCSV → SQL INSERT生成が役立ちます。

利用シーンを見る
  • CSVからテスト用INSERT文をすぐ作りたいとき
  • Excel等で作ったデータをDB投入用SQLへ変換したいとき
  • データ移行・検証用データ作成の補助に使いたいとき
  • `csv-filter`等で加工したCSVをそのままINSERT文にしたいとき

CSV → SQL INSERT生成の仕組みと注意点

詳しい解説を見る

テーブル名・列名は常に引用符付き識別子として出力します

テーブル名・CSVのheader(列名)を生のままSQLへ連結せず、選択した方言のルールで常に引用符付き識別子("name"・`name`・[name])として出力します。予約語・空白・記号・日本語を含む名前もそのまま扱えます。引用符付き識別子はOracle・PostgreSQL等で大文字小文字が区別されます。実際のテーブル・カラム定義の表記に合わせてテーブル名・CSVのheaderを入力してください(本ツールが大文字・小文字を自動で変換することはありません)。

テーブル名は "schema.table" 形式(最大2セグメント)に対応します

public.usersのようにドットで区切られた最大2セグメントのテーブル名に対応しています。3セグメント以上(catalog.schema.table)はエラーになります。

文字列のエスケープについて(MySQL/MariaDBのバックスラッシュ)

シングルクォート(')はすべての方言で''へ二重化します。MySQL/MariaDBのみ、既定設定(NO_BACKSLASH_ESCAPESが無効)を前提にバックスラッシュ(\)も\\へ二重化します。サーバー側でNO_BACKSLASH_ESCAPESモードが有効な場合、生成された\\はエスケープとして解釈されず2文字のバックスラッシュとしてそのまま格納されます。改行・タブ・NUL文字を含むセルの扱いは、NUL文字(\0)のみ方言を問わず一律エラーとし、それ以外(改行・CR・タブ)はそのまま値に埋め込みます。

型判定について(既定は全セル文字列)

既定では全セルを文字列リテラルとして出力します。「数値・真偽値を自動判定」を選ぶと、00123のような先頭ゼロの値・NaN・Infinityは数値として扱わず文字列のまま出力します(郵便番号・コード・IDの破壊を防ぐため)。巨大な整数もJavaScriptの数値型へ変換し直さず、入力文字列をそのまま出力します。真偽値は標準SQL/PostgreSQL/MySQL・MariaDB/SQLiteではTRUE/FALSE、SQL Server/Oracleでは1/0として出力します。

Oracle方言とmulti-row INSERTについて

Oracle SQLは他方言のようなVALUES (...), (...);形式のmulti-row INSERT構文を標準サポートしないため、Oracleを選択した場合は常に1行ずつのINSERT文を生成します(INSERT形式の選択に関わらず)。

生成されたSQLはPrepared Statement / Parameterized Queryの代替ではありません

生成されたSQLは、アプリケーションでユーザー入力を安全に扱うためのprepared statement(プレースホルダ)・parameterized queryの代替ではありません。本ツールはSQLインジェクション対策を目的としたものではなく、入力いただいたテーブル名・列名・値を、選択した方言のルールに従って文字列として組み立てるだけです。実行前に内容をご確認のうえ、可能であればテスト環境またはトランザクション内で先に実行結果をご確認ください。

よくある質問

生成したSQLをそのまま本番アプリに組み込んでも安全ですか?

いいえ。本ツールが生成するSQLはprepared statement / parameterized queryの代替ではありません。主に開発・テスト・データ移行等の用途を想定しています。実行前に内容をご確認のうえ、可能であればテスト環境またはトランザクション内で先に実行結果をご確認ください。

テーブル名・列名に予約語や日本語を使えますか?

はい。テーブル名・列名は常に方言ごとの引用符付き識別子として出力するため、予約語・空白・記号・日本語を含む名前もそのまま扱えます。ただし引用符付き識別子はOracle・PostgreSQL等で大文字小文字が区別されるため、実際のテーブル・カラム定義の表記に合わせて入力してください。

00123のような値は数値に変換されますか?

既定(全セルを文字列として出力)では変換されません。「数値・真偽値を自動判定」を選んだ場合も、先頭が0で始まる値は数値として扱わず文字列のまま出力します。

Oracleを選ぶとINSERT形式はどうなりますか?

Oracle SQLはmulti-row VALUES構文を標準サポートしないため、Oracleを選択した場合は常に1行ずつのINSERT文を生成します。

入力したCSVはサーバーへ送信されますか?

いいえ。INSERT文の生成はすべてブラウザ内で完結しており、入力内容がサーバーへ送信されることはありません。