UltKit

CSVをSQLに変換

表計算ソフトから書き出したCSVを、データベースでそのまま実行できるスクリプトに変換します。ヘッダー行が列名になり、各行がINSERT文になります。引用符の書き方は選んだSQL方言に従います。

データ変換

またはCSV, TSV, TXT … ファイルをここにドロップ ·

1ファイルあたり最大95 MB· 最大20ファイルまで· 30分後に削除

出力

ファイルは当社のサーバーで処理され、30分後に削除されます。

このツールの使い方

  1. 1

    CSVをアップロード

    CSVファイルを1つ、または最大20個(1ファイル95 MBまで)追加してください。セミコロン区切りやタブ区切りのファイルは自動で判別されます。

  2. 2

    テーブル名と方言を設定

    詳細設定のSQLテーブル名にテーブル名を入力し、SQL方言をMySQL、PostgreSQL、SQLite、SQL Serverから選びます。日付はISO形式に設定されているため、日付リテラルは推測なしでそのまま読み込めます。

  3. 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変換の例

id,name,joined の2行から生成したスクリプト
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へのインポートに適した初期設定
生成スクリプトに影響するデータベースの制限
機関要件出典
MySQL 8.0max_allowed_packetの初期値は64 MBで、これを超える単一のステートメントは拒否されます—
SQL Server1つのINSERT … VALUESリストで指定できる行値式は最大1,000個です—
PostgreSQL63バイトを超える識別子は通知なく切り詰められます—
SQLiteデフォルトのビルドでは、1つのテーブルの列数は最大2,000です—

スクリプト実行前に確認すること

まずCREATE TABLEの行を確認してください。列の型は値から推測されるため、間違うことがあります。郵便番号や電話番号は数値に見えてもテキストのままにする必要があり、そうしないと 02134 の先頭のゼロが失われます。スクリプトを実行する前に型を変更するか、テーブルを自分で作成してINSERT部分だけを実行してください。

my_table の代わりに、実際の名前をSQLテーブル名に入力してください。クライアントが対応していれば、スクリプトはトランザクション内で実行すると、1行でも不正があればすべて巻き戻せます。同じCSVの他の変換先はデータ変換のハブで確認できます。

CSVとSQLスクリプトの形式

CSV

CSV(カンマ区切り値)

CSV は表形式のデータをプレーンテキストで表す形式で、1行が1つの行にあたり、列はカンマで区切ります。コンピューターの初期から使われており、RFC 4180 に記述がありますが、セミコロンやタブで区切る変種や、異なる文字コードを使うものも多くあります。ほとんどの表計算ソフト、データベース、分析ツールで読み込みと書き出しができるため、システム間でデータをやり取りする際の標準的な形式です。CSV に保存されるのは値だけで、数式、書式、複数のシート、データ型は含まれません。

圧縮方式
–
透過
–
アニメーション
–
登場時期
–
CSV 変換

SQL

SQLスクリプト

SQLファイルは、CREATE TABLE や INSERT などの SQL(Structured Query Language)文を記述したプレーンテキストのスクリプトで、データベースが順に実行します。データベースのバックアップ、移行、サンプルデータの共有によく使われます。言語自体は ISO 標準ですが、MySQL、PostgreSQL、SQLite、SQL Server にはそれぞれ独自の方言があるため、システム間ではスクリプトに小さな修正が必要になることがよくあります。SQLファイルはどのテキストエディタでも開けますが、実行にはデータベースクライアントが必要です。

圧縮方式
–
透過
–
アニメーション
–
登場時期
–
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エクスポートを使ってください。どちらも、スプレッドシートで再び開ける行データが得られます。