CSVをSQLに変換
表計算ソフトから書き出したCSVを、データベースでそのまま実行できるスクリプトに変換します。ヘッダー行が列名になり、各行がINSERT文になります。引用符の書き方は選んだSQL方言に従います。
データ変換
またはCSV, TSV, TXT … ファイルをここにドロップ ·
1ファイルあたり最大95 MB· 最大20ファイルまで· 30分後に削除
ファイルは当社のサーバーで処理され、30分後に削除されます。
CSVやテキストファイルで列を区切る文字です。読み込みと書き出しの両方に使われます。自動は入力から判別し、書き出しはカンマにします。
UTF-8はあらゆる言語に対応します。WindowsのExcelでCSVを開いたときにアクセント文字や日本語などが文字化けする場合は、BOM付きUTF-8を選んでください。
Excel、ODS、Numbersの入力用です。最初のシートだけ、またはすべてのシートを変換します(CSVはシートごとに1ファイルをZIPにまとめ、JSONはシートごとに1つのキーになります)。
新しいスプレッドシートのシートタブの名前です。31文字までです。
オブジェクトの配列は、各行で列名をキーにします。配列の配列はよりコンパクトで、ヘッダーを最初の配列として保持します。
すべての行を囲む外側の要素の名前です。各行はその中で<row>になります。
CREATE TABLE文とINSERT文で使われます。英字、数字、アンダースコアのみ使えます。
引用符の付け方や列の型はデータベースごとに少しずつ異なります。インポート先に合わせて選んでください。
日付のセルを1つの形式に書き換えます。ISO(2026-10-18)はデータベースやコードに最も安全です。そのままは元の表記を保ちます。
このツールの使い方
- 1
CSVをアップロード
CSVファイルを1つ、または最大20個(1ファイル95 MBまで)追加してください。セミコロン区切りやタブ区切りのファイルは自動で判別されます。
- 2
テーブル名と方言を設定
詳細設定のSQLテーブル名にテーブル名を入力し、SQL方言をMySQL、PostgreSQL、SQLite、SQL Serverから選びます。日付はISO形式に設定されているため、日付リテラルは推測なしでそのまま読み込めます。
- 3
変換して実行
SQLに変換を押し、CREATE TABLEの行を確認してから、データベースクライアントまたはインポート画面でスクリプトを実行します。
CSVからSQLへの変換では、ヘッダー行からCREATE TABLE文を、データ行ごとにINSERT文を作成します。MySQL、PostgreSQL、SQLite、SQL Server向けに引用符も調整されるため、スクリプトを1回実行するだけでスプレッドシートをデータベースに読み込めます。
CSVをSQLのINSERT文に変換する理由
どのデータベースにも高速なCSVローダーがありますが、いずれも制約があります。LOAD DATA LOCAL INFILEはMySQL 8.0以降、サーバー側で初期状態では無効です。PostgreSQLでファイルからCOPY FROMを行うにはスーパーユーザー権限か特別なロールへの所属が必要です。SQL ServerのBULK INSERTが読むのはサーバーマシン上のパスで、手元のPCではありません。ホスティングされたデータベースでは、クエリエディタしか使えないことも多くあります。
INSERTスクリプトなら、そうした問題を回避できます。テキストなので中身を確認でき、シードデータとしてバージョン管理にコミットでき、どのクライアントでも実行できます。代わりに速度は犠牲になります。数万行なら問題なく読み込めますが、数百万行ならネイティブの一括ローダーが向いています。参照データをワークブックで管理している場合は、ExcelをSQLに変換でCSVの手順を省けます。
MySQL向けCSV→SQL変換の例
CREATE TABLE `my_table` ( `id` INT, `name` VARCHAR(255), `joined` DATE ); INSERT INTO `my_table` (`id`, `name`, `joined`) VALUES (1, '佐藤 花子', '2026-03-02'), (2, 'Liam O''Brien', '2026-04-15');
4つのSQL方言で出力はどう違うか
識別子は order date のようにバッククォートで囲まれます。これにより、order などの予約語も列名として使えます。
- MariaDBにも対応
- phpMyAdminへのインポートに適した初期設定
識別子には標準のダブルクォートを使います。引用符付きの名前は大文字小文字が区別されるため、"Email" と email は別の列になります。
- 63バイトを超える名前は切り詰められます
ここでもダブルクォートを使い、型付けは柔軟です。INTと宣言した列でも、テーブルをSTRICTで宣言しない限りテキストを受け付けます。STRICTはSQLite 3.37.0で追加されたオプションです。
- sqlite3シェルやDB Browser for SQLiteで実行できます
識別子は [order date] のように角括弧で囲みます。ラテン文字以外を含むテキスト列には、NVARCHARとN'…'リテラルが必要です。
- SSMSやAzure Data Studioで実行できます
| 機関 | 要件 | 出典 |
|---|---|---|
| MySQL 8.0 | max_allowed_packetの初期値は64 MBで、これを超える単一のステートメントは拒否されます | — |
| SQL Server | 1つのINSERT … VALUESリストで指定できる行値式は最大1,000個です | — |
| PostgreSQL | 63バイトを超える識別子は通知なく切り詰められます | — |
| SQLite | デフォルトのビルドでは、1つのテーブルの列数は最大2,000です | — |
スクリプト実行前に確認すること
まずCREATE TABLEの行を確認してください。列の型は値から推測されるため、間違うことがあります。郵便番号や電話番号は数値に見えてもテキストのままにする必要があり、そうしないと 02134 の先頭のゼロが失われます。スクリプトを実行する前に型を変更するか、テーブルを自分で作成してINSERT部分だけを実行してください。
my_table の代わりに、実際の名前をSQLテーブル名に入力してください。クライアントが対応していれば、スクリプトはトランザクション内で実行すると、1行でも不正があればすべて巻き戻せます。同じCSVの他の変換先はデータ変換のハブで確認できます。
CSVとSQLスクリプトの形式
CSV
CSV(カンマ区切り値)
CSV は表形式のデータをプレーンテキストで表す形式で、1行が1つの行にあたり、列はカンマで区切ります。コンピューターの初期から使われており、RFC 4180 に記述がありますが、セミコロンやタブで区切る変種や、異なる文字コードを使うものも多くあります。ほとんどの表計算ソフト、データベース、分析ツールで読み込みと書き出しができるため、システム間でデータをやり取りする際の標準的な形式です。CSV に保存されるのは値だけで、数式、書式、複数のシート、データ型は含まれません。
- 圧縮方式
- –
- 透過
- –
- アニメーション
- –
- 登場時期
- –
SQL
SQLスクリプト
SQLファイルは、CREATE TABLE や INSERT などの SQL(Structured Query Language)文を記述したプレーンテキストのスクリプトで、データベースが順に実行します。データベースのバックアップ、移行、サンプルデータの共有によく使われます。言語自体は ISO 標準ですが、MySQL、PostgreSQL、SQLite、SQL Server にはそれぞれ独自の方言があるため、システム間ではスクリプトに小さな修正が必要になることがよくあります。SQLファイルはどのテキストエディタでも開けますが、実行にはデータベースクライアントが必要です。
- 圧縮方式
- –
- 透過
- –
- アニメーション
- –
- 登場時期
- –
CSVをSQLに変換するのは、クエリウィンドウからしか接続できないデータベースにファイルをテーブルとして取り込む必要があるときです。新しいアプリの初期データ投入、参照リストの読み込み、サーバーへアクセスできない状態でのスプレッドシートのMySQLやPostgreSQLへの移行などが当てはまります。
CSV→SQL変換に関するよくある質問
LOAD DATAやCOPYではなくSQLファイルを使う理由は?
MySQLのLOAD DATA INFILEやPostgreSQLのCOPYなどの一括読み込みは高速ですが、サーバー上のファイルへのアクセス権や、クライアント側の追加フラグが必要です。通常のスクリプトなら、SQLを貼り付けられる場所ならどこでも実行できます。クラウドデータベースのコンソール、phpMyAdmin、レビュー済みのマイグレーションなどです。
O'Brienのようなアポストロフィを含む名前はどう書かれますか?
SQL文字列の中では、シングルクォートを2つ重ねてエスケープするため、値は 'O''Brien' と書き出されます。4つの方言すべてがこの形式に対応しているので、アポストロフィを含む名前でもINSERTは壊れません。
CSVのヘッダーはテーブルで何になりますか?
列名で、選んだ方言の形式で引用符が付きます。Unit Price のようなヘッダーも使えますが、スペースを含む引用符付きの名前は、以後のクエリでも毎回引用符で囲む必要があります。可能であれば、変換前に unit_price のような名前に変更してください。
SQLファイルはphpMyAdminからインポートできますか?
はい、インポートタブから実行できます。上限はPHPのupload_max_filesizeで、標準のphp.iniでは2 MBです。多くのホスティングでは引き上げられており、現在の上限はページに表示されます。スクリプトがそれより大きい場合は、CSVを複数のファイルに分割してください。
テーブルからCSVに戻す方法はありますか?
テーブルをダンプとしてエクスポートし、SQLをCSVに変換で変換するか、データベースクライアント自体のCSVエクスポートを使ってください。どちらも、スプレッドシートで再び開ける行データが得られます。
- ExcelをSQLに変換ExcelシートをMySQL、PostgreSQL、SQLite、SQL Server用のSQLスクリプトに変換します。見出し行は列に、各行はINSERT文になります。
- SQLをCSVに変換.sqlダンプのINSERT文を、ExcelやGoogleスプレッドシートで開けるCSVの行に変換します。MySQL、phpMyAdmin、SQLite、SQL Serverのダンプに対応。
- CSVをXLSXに変換CSVをExcelのXLSXブックに変換。先頭の0、桁の長いID、アクセント付き文字もそのまま保持します。カンマ・セミコロン・タブ区切りを自動判別します。
- CSVをXMLに変換CSVの行をルートタグ指定で整形式XMLに変換。特殊文字のエスケープ、区切り文字の自動判定、UTF-8出力に対応。最大20ファイルまで一括変換できます。
- CSVをParquetに変換CSVを型付きの列と圧縮を備えたApache Parquetに変換。pandas、DuckDB、Spark、BigQuery、Athenaでそのまま使えます。PythonやSparkの環境構築は不要です。
- ParquetをCSVに変換Apache ParquetファイルをオンラインでCSVに変換し、Excel、Googleスプレッドシートなどで開けます。Python・Spark・DuckDBは不要。最大20ファイル。