データベースツール

SQLからJSON

リテラルを取り出し、表を確認してJSONまたはCSVに書き出します。

SQLからJSON

SQL INSERT入力

書き出すテキスト

ブラウザ内で解析します。SQLの実行やデータベースへの送信は行いません。

設定

安全な整数だけをJSON数値にし、他の数値リテラルは文字列で保持します。CSVは数値表記を保持します。

明示的な列名とVALUESリテラルのみ。名前は完全一致で照合します。MySQLはバックスラッシュを解釈し、PostgreSQL/SQLiteは保持します。

上限:200000 UTF-16コード単位、500文、100表、各表100列、合計5000行・100000セル。出力も2000000 UTF-16コード単位までに制限し、長いキーの繰り返しによる肥大化を防ぎます。

INSERT文を入力するかサンプルを読み込んでください。

SQLからJSONへの変換は、初期データ用のスクリプトをAPIのテストデータに使いたいときに役立ちます。INSERT文の列名は削除しないでください。列名がオブジェクトのキーになり、後続の文で列の順序が変わっても値を対応付けられます。

SQLからJSONへ変換する場面

別の表の列を混ぜない

SQLからJSONへ変換すると、同じ表を対象にした行だけがまとめられます。注文表に利用者表の見出しを流用することはありません。スキーマ名付きの表と、名前自体にドットを含む引用識別子も区別します。

色の異なる入力行が別々の表に入り、片方の表だけが書き出し対象になる図。

値を推測して埋めない

大きなIDの末尾が変わると、テストデータとして使えません。安全な整数以外の数値は文字列として桁を保持します。関数呼び出しなど、ここで値を確定できない式は位置を示して拒否します。

リテラルは表まで届き、式を含む行は警告位置で止まる図。

変換前に確認したい設定

01

バックスラッシュの扱いを選ぶ

PostgreSQLとSQLiteでは通常の文字列内のバックスラッシュをそのまま保持します。MySQLでは対応するエスケープを解釈します。サーバー設定の自動検出はないため、パスなどを含む場合は方言を確認してください。

02

表示中の表と件数を確認する

状態には入力全体の文数と表数、選択中の表の行数と列数が表示されます。表は50行ずつ展開できますが、コピーと保存は選択した表の全行が対象です。別の表は自動では含まれません。

03

手動に切り替えるときは再解析する

自動解析は入力が止まってから350ミリ秒後に動きます。無効にすると解析ボタンとCtrl/Cmd + Enterが使えます。編集直後は古い結果の書き出しが無効になり、成功するまで再び有効にはなりません。

列と値を確かめながら取り出す

列名に基づく対応付け

INSERT SQLの明示された列名をJSON配列の各オブジェクトのキーにします。同じ列を別の順序で指定した文も、最初の列順に対応付けます。重複する列名や列集合の変更は、欠損値を補う代わりにエラーにします。

引用符の内側を追跡する解析

カンマで単純に分割せず、文字列の開始と終了を追跡します。値の中のカンマ、括弧、セミコロン、改行、二重に書かれた単一引用符を保持します。通常のコメントは読み飛ばしますが、閉じていないコメントは受け付けません。

型が必要ならJSONを選ぶ

SQL CSV変換では見出し付きのカンマ区切りテキストを生成し、改行はCRLFです。CSVの二重引用符は適切にエスケープします。NULLは空フィールドになるため、空文字列との型の違いを残したい場合はJSONを選びます。

保存されるテキストを先に確認

結果欄の内容がそのままコピーとダウンロードに使われます。CSVの数式対策は、危険な先頭文字を持つ文字列や見出しにアポストロフィを加え、件数を知らせます。数値の負号やJSONの値は変更しません。

対応する構文と制限

VALUESのリテラルだけを扱う
列名付きのINSERT INTO ... VALUESを受け付け、文の間にはセミコロンが必要です。関数、計算、キャスト、DEFAULT、パラメーター、INSERT SELECT、競合処理、RETURNING、DDL、トランザクションは拒否します。途中に未対応文があれば全体を失敗にします。
方言の完全な再現ではない
PostgreSQL、MySQL、SQLiteの限定した引用符と文字列規則を使用します。識別子の大文字小文字変換、照合順序、スキーマの型は推定しません。列名なし、バイナリ、ドル引用符、E/N/U&接頭辞、入れ子コメント、実行可能コメントは未対応です。
数値の表記を保持する
安全範囲外の整数、小数、指数表記、負のゼロはJSON文字列になります。CSVでは数値トークンの表記を保持します。引用符内の日付は日付型に変換せず、JSONのように見える文字列も入れ子のオブジェクトに展開しません。
入力と件数には上限がある
入力は200000 UTF-16コード単位まで。500文、100表、各表100列、合計5000行と100000セルまでです。上限超過時に一部だけを出力することはありません。ファイル読込、URL取得、セル編集、複数表の一括保存は行いません。出力も2000000 UTF-16コード単位までに制限し、長いキーの繰り返しによる肥大化を防ぎます。
CSVの解釈は取り込み先でも確認する
CSVではNULLと空文字列を確実に区別できません。数式対策はCSV内の文字列を変更しますが、すべての表計算ソフトや再保存後の動作まで保証するものではありません。必要に応じて文字列として取り込んでください。

SQLからJSONへの変換について

オンラインでSQLからJSONに変換するには?

列名付きのINSERT文を貼り付け、方言を選びます。自動解析の結果を表で確認してから、目的の表を選んで書き出します。SELECTの実行結果やCREATE TABLEを含むダンプ全体を読み込む機能はありません。

入力サイズの上限はありますか?

200000 UTF-16コード単位が上限で、行数や文数にも個別の上限があります。どれかを超えるとバッチ全体を拒否します。プレビューの50行は表示上の区切りであり、成功した書き出しの行数制限ではありません。

モバイルでも使えますか?

はい。入力と結果は狭い画面では縦に並び、横長の表は枠内でスクロールできます。大きい入力は小さなバッチに分けると確認しやすくなります。画面に見えていない行も選択中の表の書き出しに含まれます。

入れ子のJSONを含む値はどうなりますか?

SQLの引用文字列のまま出力します。たとえば配列に見える文字列でも自動的には解析しません。元の値の型を勝手に変えないための規則です。必要な場合は後続のJSON処理で明示的に解析してください。

複数行のINSERT文を処理できますか?

はい。VALUESの各括弧が1行になります。列数と値の数が一致しない行や式を含む行があれば全体を止めます。同じ表の複数文も連結できますが、異なる表は別々のグループとして選択します。

対応する値が正しく解析されませんか?

初期データを別の形式へ

SQLからJSONへの変換を短いサンプルで試し、引用符の値と選択中の表を確かめてください。数値の保持件数も確認してから、実際のバッチを書き出せます。