機能
スプレッドシートのデータをデータベースに取り込むには、テーブル定義と大量の INSERT 文を手で書き、アポストロフィを 1 つずつエスケープする必要があります。このツールはそれを代わりに行います。CSV を貼り付けると、CREATE TABLE 文とバッチ化された複数行の INSERT 文からなる、そのまま実行できる SQL スクリプトが得られます。
RFC 4180 に従い、引用符で囲まれたフィールド、セル内のカンマや改行、二重にした引用符を正しく扱います。文字列は選んだデータベースに合わせてエスケープされ、MySQL のバックスラッシュや SQL Server の N'…' Unicode 文字列にも対応します。
使い方
- CSV を貼り付けるか、
.csvまたは.tsvファイルをアップロードするか、サンプル を押します。 - テーブル名 を入力します。スキーマを付ける場合は
public.ordersやdbo.ordersのようにドットで区切ります。 - データベース を選びます:MySQL / MariaDB、PostgreSQL、SQLite、SQL Server。
- INSERT 1 文あたりの行数 を選び、テーブルがすでにある場合は CREATE TABLE をオフにします。
- 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 の生成はすべてブラウザー内で行われ、データが端末の外に出ることはありません。