DevToolPal
日本語

CSV → SQL 変換

CSV から MySQL、PostgreSQL、SQLite、SQL Server 向けの CREATE TABLE 文と INSERT 文を生成します。列の型は自動推定。

ローカルで処理、アップロードなし

オプション

入力

0 文字 · 0 B

出力

0 文字 · 0 B

機能

スプレッドシートのデータをデータベースに取り込むには、テーブル定義と大量の INSERT 文を手で書き、アポストロフィを 1 つずつエスケープする必要があります。このツールはそれを代わりに行います。CSV を貼り付けると、CREATE TABLE 文とバッチ化された複数行の INSERT 文からなる、そのまま実行できる SQL スクリプトが得られます。

RFC 4180 に従い、引用符で囲まれたフィールド、セル内のカンマや改行、二重にした引用符を正しく扱います。文字列は選んだデータベースに合わせてエスケープされ、MySQL のバックスラッシュや SQL Server の N'…' Unicode 文字列にも対応します。

使い方

  1. CSV を貼り付けるか、.csv または .tsv ファイルをアップロードするか、サンプル を押します。
  2. テーブル名 を入力します。スキーマを付ける場合は public.orders や dbo.orders のようにドットで区切ります。
  3. データベース を選びます:MySQL / MariaDB、PostgreSQL、SQLite、SQL Server。
  4. INSERT 1 文あたりの行数 を選び、テーブルがすでにある場合は CREATE TABLE をオフにします。
  5. SQL をコピーするか .sql ファイルとしてダウンロードし、データベースクライアントで実行します。

区切り文字は自動で検出されますが、カンマ、セミコロン、タブ、パイプを明示的に指定することもできます。1 行目が列名ではなくデータの場合は 1 行目をヘッダーにする をオフにすると、列名は column_1、column_2 のようになります。

例

次の CSV は:

id,name,price,in_stock
1,Ada's Tea,4.50,true
2,Coffee,,false

PostgreSQL 向けに次のスクリプトになります:

CREATE TABLE "products" (
  "id" INTEGER,
  "name" TEXT,
  "price" NUMERIC(3, 2),
  "in_stock" BOOLEAN
);

INSERT INTO "products" ("id", "name", "price", "in_stock") VALUES
  (1, 'Ada''s Tea', 4.50, TRUE),
  (2, 'Coffee', NULL, FALSE);

Ada's のアポストロフィは 2 つに重ねられ、空の価格は NULL になり、数値と真偽値は引用符なしで書かれます。

型と方言

  • MySQL / MariaDB:識別子はバッククォート、型は INT、DECIMAL、BOOLEAN、DATE、DATETIME、VARCHAR(255) または TEXT。文字列中のバックスラッシュはエスケープされます。
  • PostgreSQL:識別子はダブルクォート、型は INTEGER、NUMERIC、BOOLEAN、DATE、TIMESTAMP、TEXT。
  • SQLite:識別子はダブルクォート、SQLite のストレージクラス INTEGER、REAL、TEXT を使います。真偽値は 1 と 0 で書かれます。
  • SQL Server:識別子は角かっこ、型は INT、DECIMAL、BIT、DATE、DATETIME2、NVARCHAR。文字列は N'…' で、INSERT 1 文は最大 1000 行です。
  • 空のセルは NULL になります。空のセルを NULL にする をオフにすると、テキスト列では空文字列のままになります。
  • 本番データで実行する前に推定された型を確認してください。サンプルに小さな数値しかない列は、後でより広い型が必要になることがあります。

よくある質問

› どのデータベースに対応していますか?

MySQL(および MariaDB)、PostgreSQL、SQLite、Microsoft SQL Server です。選んだデータベースによって、テーブル名・列名の囲み方、文字列のエスケープ、使う列の型、真偽値の書き方が変わります。

› 列の型はどう決まりますか?

各列を走査し、整数は INT または BIGINT、小数は十分な精度の DECIMAL、true/false は BOOLEAN(SQL Server では BIT)、ISO 形式の日付は DATE または DATETIME、それ以外はテキスト型になります。郵便番号のように先頭が 0 の数字はテキストのままです。「型を推定」をオフにするとすべての列がテキストになります。

› SQL Server だけ INSERT 1 文が 1000 行までなのはなぜですか?

SQL Server は 1000 行を超える VALUES リストを受け付けないため、この方言ではそれより大きいバッチサイズは 1000 に制限されます。他のデータベースはもっと大きなバッチも受け付けますが、1 文あたり 100〜1000 行が速度と文の長さのバランスのよい目安です。

› CSV はアップロードされますか?

いいえ。解析と SQL の生成はすべてブラウザー内で行われ、データが端末の外に出ることはありません。