JSON を Oracle に変換
JSON ファイルをドロップすると、CREATE TABLE と INSERT 文を含む Oracle 用のスクリプトができます。各列に型を付け、すべての修正を行と列とともに一覧にします。
4 行を変換、修正 2 件、却下なし
| 行 | ||||||
|---|---|---|---|---|---|---|
| 2 | 000481 | Peña Muñoz | 2024-02-03T10:15:00Z | 1234.5 | true | |
| 3 | 000482 | José Ángel Ruiz | 2024-02-15T16:40:00Z | 99.9 | false | Entrega en la tarde |
| 4 | 000483 | Zoë Ortíz | 2024-02-29T09:05:00Z | 12 | true | |
| 5 | 000484 | Ñuño Castañeda | 2024-03-11T13:30:00Z | 980.75 | sí | Factura con "RFC" |
-- Written by IntoSQL for Oracle.
SET DEFINE OFF
CREATE TABLE pedidos_2024 (
pedido VARCHAR2(8 CHAR) NOT NULL,
cliente VARCHAR2(16 CHAR) NOT NULL,
fecha TIMESTAMP WITH TIME ZONE NOT NULL,
total NUMBER(6,2) NOT NULL,
pagado NUMBER(1) NOT NULL,
notas VARCHAR2(32 CHAR)
);
INSERT ALL
INTO pedidos_2024 (pedido, cliente, fecha, total, pagado, notas) VALUES ('000481', 'Peña Muñoz', TIMESTAMP '2024-02-03 10:15:00 +00:00', 1234.5, 1, NULL)
INTO pedidos_2024 (pedido, cliente, fecha, total, pagado, notas) VALUES ('000482', 'José Ángel Ruiz', TIMESTAMP '2024-02-15 16:40:00 +00:00', 99.9, 0, 'Entrega en la tarde')
INTO pedidos_2024 (pedido, cliente, fecha, total, pagado, notas) VALUES ('000483', 'Zoë Ortíz', TIMESTAMP '2024-02-29 09:05:00 +00:00', 12, 1, NULL)
INTO pedidos_2024 (pedido, cliente, fecha, total, pagado, notas) VALUES ('000484', 'Ñuño Castañeda', TIMESTAMP '2024-03-11 13:30:00 +00:00', 980.75, 1, 'Factura con "RFC"')
SELECT 1 FROM DUAL;
COMMIT;
修正
- "pedido" の先頭のゼロを保持しました。000481 は 000481 のまま、テキストとして保存します。
- "pagado" には「はい/いいえ」の語 (sí) があるため、ブール値として保存しました。
ファイルはこのコンピューター上で変換され、アップロードされることはありません。
その他のサンプル:
JSON から Oracle へ、列ごとに
上のサンプル pedidos_2024.json を IntoSQL が Oracle 用に書き出した結果です。各列のファイル内の内容、付く型、最初の値がスクリプトでどうなるかを示します。
| ファイル内 | 最初の値 | 列 | Oracle の型 | スクリプト内 |
|---|---|---|---|---|
| pedido | 000481 | pedido | VARCHAR2(8 CHAR) | '000481' |
| cliente | Peña Muñoz | cliente | VARCHAR2(16 CHAR) | 'Peña Muñoz' |
| fecha | 2024-02-03T10:15:00Z | fecha | TIMESTAMP WITH TIME ZONE | TIMESTAMP '2024-02-03 10:15:00 +00:00' |
| total | 1234.5 | total | NUMBER(6,2) | 1234.5 |
| pagado | true | pagado | NUMBER(1) | 1 |
| notas | - | notas | VARCHAR2(32 CHAR) | NULL |
スクリプトを Oracle に読み込む
ダウンロードされるのは普通の .sql ファイルです。Oracle 付属のツールで実行してください。
ターミナルから
sqlplus user@//localhost/mydb @pedidos_2024.oracle.sqlスクリプトは置換変数をオフにする (SET DEFINE OFF) ため、データ内のアンパサンドはそのまま残ります。
データベースツールから
SQL Developer では、スクリプトを開いて Run Script (F5) を選びます。
JSON ファイルと Oracle について知っておくこと
IntoSQL が JSON ファイルから読み取るもの
- ファイルはオブジェクトの配列、その配列を data などのキーの下に持つオブジェクト、または 1 行に 1 オブジェクト (NDJSON) のいずれでも使えます。
- 各キーが列になります。値の中のオブジェクトや配列は JSON テキストとして保持されます。
- 数値は桁をそのまま保ち、ISO 8601 の日付は日付またはタイムスタンプになります。
Oracle について知っておくこと
- はい/いいえの値は 1 または 0 を持つ NUMBER(1) になり、どの Oracle バージョンでも使えます。
- テキストは文字数で長さを指定した VARCHAR2 で、4000 バイトを超えると CLOB になります。Oracle は空のテキストを NULL として保存します。
- 行は INSERT ALL で挿入され、長い値は SQL*Plus が受け付けるように分割されます。
Oracle で各種類の値がどう保存されるか
| 値 | Oracle |
|---|---|
| はい/いいえ | NUMBER(1) |
| 整数 | NUMBER(10) |
| 大きな整数 | NUMBER(19) |
| 小数 | NUMBER(p,s) |
| 浮動小数点数 | BINARY_DOUBLE |
| 日付 | DATE |
| 時刻 | INTERVAL DAY(0) TO SECOND |
| 日付と時刻 | TIMESTAMP |
| 日付と時刻、時差付き | TIMESTAMP WITH TIME ZONE |
| テキスト | VARCHAR2(n CHAR)CLOB |
JSON から Oracle への変換に関する質問
ここに答えがない場合は、お問い合わせページからご連絡ください。担当者が返信します。 お問い合わせページ
JSON を Oracle に変換するには?
このページ上部のコンバーターにファイルをドロップしてください。ヘッダーを見つけ、すべての値を読み取り、行った修正を一覧にしながら Oracle 用のスクリプトを書き出します。スクリプトをダウンロードし、SQL*Plus で実行してください。
JSON ファイルはどんな形式が必要ですか?
オブジェクトの配列、その配列を data などのキーの下に持つオブジェクト、または 1 行に 1 オブジェクト (NDJSON) です。各キーが列になります。
Oracle ではどの型を使いますか?
はい/いいえの値は NUMBER(1)、整数は NUMBER(10)、小数は NUMBER(p,s)、日付は DATE、時刻付きの日付は TIMESTAMP、テキストは VARCHAR2(n CHAR) になります。サイズは各列の最も長い値から決まります。
Oracle で先頭のゼロは残りますか?
はい。000481 のようなコードはテキストのまま扱われるため、Oracle では VARCHAR2(8 CHAR) として保存され、スクリプトには '000481' と書かれます。
スクリプトを使わずに Oracle にデータを読み込めますか?
いいえ。スクリプトをダウンロードし、SQL*Plus で実行してください。スクリプトなしの読み込みは、デスクトップアプリかコマンドラインから PostgreSQL、MySQL、MariaDB、SQLite に対して使えます。
JSON ファイルはどのくらいの大きさまで扱えますか?
1 行に 1 オブジェクトの NDJSON は流れてくる順に読むため、ブラウザでも数 GB のファイルを扱えます。JSON ドキュメントは全体を一度に読むため、上限はブラウザがこのページに割り当てるメモリです。デスクトップアプリとコマンドラインはどんなサイズのファイルも扱えます。