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テキストとして直列化されます。
機能
- 先頭行だけでなく全行から型を推論したCREATE TABLE
- バッチサイズを設定できる複数行INSERT
- PostgreSQL・MySQL・SQLite・SQL Server方言
- 方言ごとの識別子引用 — 予約語も安全
- 値のエスケープ:クォート二重化、明示的NULL
- 欠けたキーはNULL、入れ子はJSONテキストに
JSON to SQL の使い方
- オブジェクトのJSON配列を貼り付け
- テーブル名を付けて方言を選択
- 必要ならINSERTあたりの行数を調整
- 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の二重クォートこそ、スクリプトを有効に保つものです。
よくあるエラーとトラブルシューティング
- 数値らしい列がTEXTになった。 — その列のどこかの値が文字列です — 引用符つきの"42"、空文字列、N/Aなど。推論は全行を走査し、不一致が1つでもあればTEXTに退避します。外れ値を掃除して再変換を。
- orderやuserという列でスクリプトが失敗する。 — 本来失敗しないはずです — まさにそのために識別子は方言ごとに引用されています。失敗するなら方言がデータベースと合っているか確認を:バッククォートはMySQL、角括弧はSQL Serverです。
- 日付がただのテキストとして取り込まれた。 — TIMESTAMPと推論されるのはISO 8601の形(2024-01-15、時刻は任意)だけです。15/01/2024のような地域形式は曖昧なので意図的にTEXTのままにします — 先にISOに正規化してください。
よくある質問
- 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 ツール