ロゴ
ToolkitsLabEfficiency Hub
PR広告を含む

CSVからINSERT文生成ツールCSVを貼り付けるだけでSQLのINSERT文に変換

CSVデータを貼り付け・アップロードするだけで、テーブル名やSQLダイアレクトを指定して INSERT文を自動生成します。文字列・数値の自動判定やバッチ分割にも対応。

CSVデータ

検出中の区切り文字:カンマ
id#nameAaage#emailAa
1山田太郎28[email protected]
2佐藤花子34[email protected]
3鈴木一郎(空欄)[email protected]

SQL設定

テーブル名

SQLダイアレクト

1文あたりの行数(バッチサイズ)

データ行数

3

生成SQL文の数

1

生成されたSQL

INSERT INTO `my_table` (`id`, `name`, `age`, `email`) VALUES
(1, '山田太郎', 28, '[email protected]'),
(2, '佐藤花子', 34, '[email protected]'),
(3, '鈴木一郎', NULL, '[email protected]');

推定カラム型(CREATE TABLE用の目安)

id: INTname: VARCHAR(50)age: INTemail: VARCHAR(50)

CSVからSQLのINSERT文を自動生成する仕組みと使いどころ

CSVファイルのデータをデータベースに登録する際、Excelやスプレッドシートの内容から手作業でINSERT文を書き起こすのは手間がかかるうえ、シングルクォートのエスケープ漏れや型の指定ミスによる構文エラーが起こりやすい作業です。

本ツールは、CSVデータを貼り付ける、またはファイルをアップロードするだけで、MySQL・PostgreSQL・SQLite・SQL Server向けのINSERT文をブラウザ内で自動生成します。数値と文字列の自動判定、空欄のNULL変換、大量データのバッチ分割、CREATE TABLE文の生成にも対応しており、テストデータの投入やデータ移行作業を効率化できます。

入力したCSVデータはすべてブラウザ内で処理され、サーバーに送信されることはありません。個人情報や社内データを含むCSVでも安心して利用できます。

こんなシーンで便利です

開発・検証環境へのテストデータ投入

Excelやスプレッドシートで作成したテストデータ(ユーザー一覧・商品マスタなど)を、開発環境のデータベースへ一括で投入したい場合に使えます。

他システムからエクスポートしたデータの移行

旧システムやSaaSからCSV形式でエクスポートしたデータを、新しいデータベースのテーブルへ移行する際のSQL文作成に活用できます。

非エンジニアから受け取ったExcelデータのDB登録

営業や事務担当者が作成したExcel・CSVの一覧データを、エンジニアがデータベースへ登録する際に、手打ちでのSQL作成の手間を省けます。

SQL学習・練習用のサンプルデータ作成

SQLの学習や動作検証のために、手元のCSVサンプルデータからすぐにINSERT文を作り、実際にテーブルへ流し込んで挙動を確認したい場合にも便利です。

使い方は簡単 4ステップ

  1. CSVデータをテキストエリアに貼り付けるか、CSVファイルをアップロードします。
  2. 区切り文字(カンマ・タブ・セミコロン)と、1行目をヘッダーとして扱うかどうかを設定します。
  3. テーブル名とSQLダイアレクト(MySQL/PostgreSQL/SQLite/SQL Server)を指定します。
  4. バッチサイズやNULL変換などのオプションを必要に応じて調整すると、INSERT文がリアルタイムで生成されます。

生成されたSQL文はその場でコピー、または.sqlファイルとしてダウンロードできます。CSVの内容はブラウザ内でのみ処理され、外部には送信されません。

ご利用時の注意点

  • 生成されるSQL文はCSVの内容をそのまま反映したものです。実行前に必ず内容を確認し、可能であれば開発・検証環境で動作確認を行ってください。
  • 数値・文字列の型判定は簡易的な自動判定です。実際のテーブル定義の型と一致しない場合は、生成後のSQL文を手動で調整してください。
  • CREATE TABLE文はおおまかな型推定に基づく簡易的なものです。本番のテーブル設計にそのまま使用せず、参考としてご利用ください。
  • 完全無料・安全:アップロードしたCSVの内容や生成されたSQL文は、サーバーへ送信されず、すべてブラウザ内で処理されます。

主要SQLダイアレクトの識別子引用符・特徴比較表

テーブル名やカラム名を囲む記号(識別子の引用符)は、データベースの種類によって異なります。本ツールでダイアレクトを切り替えると、以下のルールに合わせてSQL文が自動生成されます。

ダイアレクト識別子の囲み記号文字列の囲み記号備考
MySQL`バッククォート`'シングルクォート'最も一般的に使われる形式
PostgreSQL"ダブルクォート"'シングルクォート'識別子は基本的に省略可能
SQLite"ダブルクォート"'シングルクォート'識別子の囲みを省略しても動作する場合が多い
SQL Server[角括弧]'シングルクォート'予約語と衝突する列名で特に有効

CSVからSQLへの変換で押さえておきたい基礎知識

INSERT文を安全かつ効率的に作成するために知っておきたい、構文・エスケープ・パフォーマンスの考え方を解説します。

INSERT文の基本構文とカラム指定の考え方

SQLのINSERT文は、INSERT INTO テーブル名 (カラム名, ...) VALUES (値, ...);という形式が基本です。
カラム名を明示しておくことで、テーブルの列順序が変わった場合や、一部の列だけにデータを投入したい場合でも、意図しない列に値が入ってしまう事故を防げます。本ツールでは「カラム名を含める」オプションのオン・オフでこの指定を切り替えられます。

シングルクォートのエスケープとSQLインジェクションへの注意

文字列データにシングルクォート(')が含まれる場合、そのままSQL文に埋め込むと構文エラーやデータ破損の原因になります。本ツールは文字列中のシングルクォートを自動的に2つ重ねる('' にエスケープする)処理を行いますが、生成したSQLを外部から入力された値と組み合わせてアプリケーションで実行する際は、改めてプレースホルダを使ったパラメータ化クエリに置き換えることを推奨します。

バッチINSERTによるパフォーマンス上のメリット

1行ごとにINSERT文を発行するよりも、複数行をまとめて1つのVALUES句に含めるバッチINSERTの方が、データベースへの書き込み処理が効率的になり、実行時間を大きく短縮できます。
一方でバッチが大きすぎると、データベース側の最大パケットサイズやクエリ長の上限に達してエラーになることがあるため、本ツールでは1文あたりの行数(バッチサイズ)を指定して自動分割できるようにしています。

NULLと空文字列の違い、型自動判定の考え方

SQLにおいてNULL(値が存在しない)空文字列('')は異なる意味を持ちます。CSV上では見分けがつきにくいため、本ツールでは空欄セルをNULLとして扱うかどうかを選択できるようにしています。
また、列内のすべての値が数値パターンに一致する場合は数値としてクォートなしで出力し、そうでない場合は文字列としてクォート付きで出力する自動判定も備えていますが、意図した型と異なる場合は生成後に調整してください。

よくある失敗と対策

カンマ入りの文字列を単純な分割処理で扱い、列がずれてしまう

「東京都, 渋谷区」のようにフィールド内にカンマを含むCSVを、単純にカンマ区切りで分割するスクリプトで処理してしまい、意図しない位置で列が分かれてSQL文の値がずれてしまう失敗です。

💡 対策・解決策を見る
本ツールはダブルクォートで囲まれたフィールド内のカンマを正しく1つの値として認識するCSVパーサーを使用しています。CSVを出力する際は、カンマを含むフィールドがダブルクォートで囲まれているか確認したうえで貼り付けてください。

シングルクォートを含む文字列をエスケープせず構文エラーになる

「O'Brien」のようにシングルクォートを含む名前や住所をそのままVALUES句に埋め込んでしまい、SQL文の途中で文字列が終了したと解釈されて構文エラーになる失敗です。

💡 対策・解決策を見る
本ツールは文字列中のシングルクォートを自動的に '' にエスケープしてから出力するため、この種の構文エラーを防げます。手動でSQLを編集する場合も、同様のエスケープ処理を必ず行ってください。

空欄セルを空文字列のまま登録し、NULLであるべきデータが意図と異なる

本来「データが存在しない」ことを表したい空欄セルを、そのまま空文字列としてINSERTしてしまい、後続の集計処理でNULLを想定した条件文(IS NULLなど)にヒットしないという失敗です。

💡 対策・解決策を見る
「空欄をNULLに変換する」オプションを有効にしたうえで生成し、対象のカラムがNULL許容(NULLABLE)な設計になっているかも合わせて確認しましょう。

SQLダイアレクトに合わない識別子の引用符を使いエラーになる

MySQL用に生成したバッククォート付きのSQL文を、そのままPostgreSQLやSQL Serverで実行してしまい、識別子の構文エラーが発生する失敗です。

💡 対策・解決策を見る
実行環境のデータベース製品に合わせて、本ツールのSQLダイアレクト設定(MySQL/PostgreSQL/SQLite/SQL Server)を必ず選択したうえで生成してください。

大量データを1本のINSERT文にまとめ、クエリ長の上限でエラーになる

数万行のデータを1つのINSERT文にまとめて生成してしまい、データベース側の最大パケットサイズやクエリ長の制限に達してエラーになる失敗です。

💡 対策・解決策を見る
本ツールのバッチサイズ設定で1文あたりの行数(例:100〜500件程度)を指定し、複数のINSERT文に分割して生成することで、この種のエラーを回避できます。

よくある質問(FAQ)

Q.CSVの1行目が見出し(ヘッダー)ではない場合はどうすればいいですか

Q.

A. 「1行目をヘッダーとして扱う」のチェックを外してください。その場合、col1・col2・col3…という自動生成された列名を使ってINSERT文を作成します。生成後にカラム名部分だけを手動で置き換えることも可能です。

Q.生成されたINSERT文をそのまま本番環境で実行しても安全ですか

Q.

A. 本ツールは文字列中のシングルクォートを自動的にエスケープしますが、生成されるSQLは入力されたCSVの内容をそのまま反映したものです。本番環境で実行する前に、必ず生成結果を目視で確認し、可能であれば開発環境やステージング環境で動作確認を行ってください。

Q.対応しているSQLの種類(データベース)はどれですか

Q.

A. MySQL(バッククォート)、PostgreSQL(ダブルクォート)、SQLite(ダブルクォート)、SQL Server(角括弧)の4種類の識別子引用ルールに対応しています。ダイアレクトを切り替えると、テーブル名・カラム名の囲み記号が自動的に変わります。

Q.文字列の中にカンマやダブルクォート、改行が含まれるCSVでも正しく処理できますか

Q.

A. はい。本ツールはダブルクォートで囲まれたフィールド内のカンマ・改行・エスケープされたダブルクォート("")を正しく解釈するCSVパーサーを内蔵しているため、Excelなどで出力した一般的なCSVをそのまま貼り付けても列がずれることはありません。

Q.数千行など大量データでも一括でINSERT文を生成できますか

Q.

A. 対応しています。「1文あたりの行数(バッチサイズ)」を指定することで、大量データを複数のINSERT文に自動分割して生成します。1本のクエリが長くなりすぎることによるエラーを避けたい場合は、バッチサイズを小さめ(100件程度)に設定することをおすすめします。

Q.空欄のセルはどのように扱われますか、NULLになりますか

Q.

A. 「空欄をNULLに変換する」を有効にすると、空のセルはSQL上のNULLとして出力されます。無効にした場合は、空文字列('')としてそのまま出力されます。数値列で空欄をNULLとして扱いたい場合などに切り替えてご利用ください。

Q.アップロードしたCSVファイルの内容が外部に送信されることはありませんか

Q.

A. ありません。本ツールはCSVの読み込みからSQL文の生成まで、すべての処理をお使いのブラウザ内だけで実行する完全ローカル処理型です。ファイルの内容がサーバーに送信されたり保存されたりすることは一切ありません。

User Feedback & Request

あなたの声で、
このツールをより鋭く。

「こんな機能が欲しい」「ここを直してほしい」といったご意見や、新しいツールのリクエストを募集しています。エンジニアが直接目を通し、開発の参考にさせていただきます。

フィードバックを送る