CSVデータを貼り付け・アップロードするだけで、テーブル名やSQLダイアレクトを指定して INSERT文を自動生成します。文字列・数値の自動判定やバッチ分割にも対応。
CSVデータ
| id# | nameAa | age# | 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用の目安)
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ステップ
- CSVデータをテキストエリアに貼り付けるか、CSVファイルをアップロードします。
- 区切り文字(カンマ・タブ・セミコロン)と、1行目をヘッダーとして扱うかどうかを設定します。
- テーブル名とSQLダイアレクト(MySQL/PostgreSQL/SQLite/SQL Server)を指定します。
- バッチサイズや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文の値がずれてしまう失敗です。
💡 対策・解決策を見る▼
シングルクォートを含む文字列をエスケープせず構文エラーになる
「O'Brien」のようにシングルクォートを含む名前や住所をそのままVALUES句に埋め込んでしまい、SQL文の途中で文字列が終了したと解釈されて構文エラーになる失敗です。
💡 対策・解決策を見る▼
空欄セルを空文字列のまま登録し、NULLであるべきデータが意図と異なる
本来「データが存在しない」ことを表したい空欄セルを、そのまま空文字列としてINSERTしてしまい、後続の集計処理でNULLを想定した条件文(IS NULLなど)にヒットしないという失敗です。
💡 対策・解決策を見る▼
SQLダイアレクトに合わない識別子の引用符を使いエラーになる
MySQL用に生成したバッククォート付きのSQL文を、そのままPostgreSQLやSQL Serverで実行してしまい、識別子の構文エラーが発生する失敗です。
💡 対策・解決策を見る▼
大量データを1本のINSERT文にまとめ、クエリ長の上限でエラーになる
数万行のデータを1つのINSERT文にまとめて生成してしまい、データベース側の最大パケットサイズやクエリ長の制限に達してエラーになる失敗です。
💡 対策・解決策を見る▼
よくある質問(FAQ)
Q.CSVの1行目が見出し(ヘッダー)ではない場合はどうすればいいですか
A. 「1行目をヘッダーとして扱う」のチェックを外してください。その場合、col1・col2・col3…という自動生成された列名を使ってINSERT文を作成します。生成後にカラム名部分だけを手動で置き換えることも可能です。
Q.生成されたINSERT文をそのまま本番環境で実行しても安全ですか
A. 本ツールは文字列中のシングルクォートを自動的にエスケープしますが、生成されるSQLは入力されたCSVの内容をそのまま反映したものです。本番環境で実行する前に、必ず生成結果を目視で確認し、可能であれば開発環境やステージング環境で動作確認を行ってください。
Q.対応しているSQLの種類(データベース)はどれですか
A. MySQL(バッククォート)、PostgreSQL(ダブルクォート)、SQLite(ダブルクォート)、SQL Server(角括弧)の4種類の識別子引用ルールに対応しています。ダイアレクトを切り替えると、テーブル名・カラム名の囲み記号が自動的に変わります。
Q.文字列の中にカンマやダブルクォート、改行が含まれるCSVでも正しく処理できますか
A. はい。本ツールはダブルクォートで囲まれたフィールド内のカンマ・改行・エスケープされたダブルクォート("")を正しく解釈するCSVパーサーを内蔵しているため、Excelなどで出力した一般的なCSVをそのまま貼り付けても列がずれることはありません。
Q.数千行など大量データでも一括でINSERT文を生成できますか
A. 対応しています。「1文あたりの行数(バッチサイズ)」を指定することで、大量データを複数のINSERT文に自動分割して生成します。1本のクエリが長くなりすぎることによるエラーを避けたい場合は、バッチサイズを小さめ(100件程度)に設定することをおすすめします。
Q.空欄のセルはどのように扱われますか、NULLになりますか
A. 「空欄をNULLに変換する」を有効にすると、空のセルはSQL上のNULLとして出力されます。無効にした場合は、空文字列('')としてそのまま出力されます。数値列で空欄をNULLとして扱いたい場合などに切り替えてご利用ください。
Q.アップロードしたCSVファイルの内容が外部に送信されることはありませんか
A. ありません。本ツールはCSVの読み込みからSQL文の生成まで、すべての処理をお使いのブラウザ内だけで実行する完全ローカル処理型です。ファイルの内容がサーバーに送信されたり保存されたりすることは一切ありません。
あなたの声で、
このツールをより鋭く。
「こんな機能が欲しい」「ここを直してほしい」といったご意見や、新しいツールのリクエストを募集しています。エンジニアが直接目を通し、開発の参考にさせていただきます。