JSON to SQL

JSON配列を、型推論つきのCREATE TABLEとバッチ化されたINSERT文に変換 — PostgreSQL・MySQL・SQLite・SQL Serverに対応します。

JSON to SQLはブラウザー内で完結します。データは端末内で変換され、アップロードされることはありません。

CSV to SQL変換を開く

JSON to SQL について

JSON to SQLはオブジェクトの配列 — APIレスポンス、エクスポート、フィクスチャファイル — を受け取り、データベースに入れるための2つの文を作ります:各列のすべての値から型を推論したCREATE TABLEと、複数行のVALUESリストにバッチ化されたINSERT文です。型推論はきちんとやります:32ビットを超える整数はBIGINTに、ISO形式の文字列はTIMESTAMPに、混在した列は安全にTEXTへ退避し、各基準型は対象方言の綴りで書かれます — BOOLEANはMySQLではTINYINT(1)、SQL ServerではBITとして届きます。手書きスクリプトを壊す細部こそが狙いです:識別子は方言ごとに引用され、orderという列名がキーワードと衝突することはなく、値の中のシングルクォートは正しく二重化されてO’Brienが生き残り、欠けたキーはNULLになり、入れ子のオブジェクトはJSONテキストとして直列化されます。

機能

JSON to SQL の使い方

  1. オブジェクトのJSON配列を貼り付け
  2. テーブル名を付けて方言を選択
  3. 必要ならINSERTあたりの行数を調整
  4. SQLをコピー — 型の一覧が先に確認できます

入力

[{"id":1,"name":"O'Brien","active":true}]

出力

CREATE TABLE "users" ("id" INTEGER, "name" TEXT, "active" BOOLEAN);
INSERT INTO "users" ("id", "name", "active") VALUES (1, 'O''Brien', TRUE);

O’’Brienの二重クォートこそ、スクリプトを有効に保つものです。

よくあるエラーとトラブルシューティング

よくある質問

JSONから列の型はどう推論されますか?
列のすべての値が投票します:整数はINTEGER(32ビット超はBIGINT)、小数が1つでもあればDOUBLE PRECISION、true/falseはBOOLEAN、ISO日付の文字列はTIMESTAMP、衝突があればTEXTに落ち着きます。全行を走査するので、後方の小数が整数列を壊すことはありません。
SQL方言の間では何が変わりますか?
識別子の引用(二重引用符、バッククォート、角括弧)、型の綴り(BOOLEAN対TINYINT(1)対BIT、DOUBLE PRECISION対DOUBLE対FLOAT対REAL)、ブール値リテラル(TRUE対1)、そしてSQL ServerがUnicodeテキストに求めるNプレフィックスです。
キーの違うオブジェクトはどう扱われますか?
列は全行のキーの和集合で、最初に現れた順です。キーのない行はそこにNULLを挿入します。異種混合のAPIデータがテーブルに着地するのに通常必要な形そのものです。
生成されたスクリプトは本番で使えますか?
インポートには使えます:構文的に安全な引用と妥当な型。しかし本番のテーブルには主キー、NOT NULL制約、インデックスがふさわしく、それはデータからの推論では当てられません — 型一覧を確認してから固めてください。

関連ツール

すべての ArrayKit ツール