本文へスキップ

JSON を Oracle に変換

JSON ファイルをドロップすると、CREATE TABLE と INSERT 文を含む Oracle 用のスクリプトができます。各列に型を付け、すべての修正を行と列とともに一覧にします。

ファイル
jsonpedidos_2024.jsonサンプルファイル、771 B
データベース

4 行を変換、修正 2 件、却下なし

表示
pedidos_2024.json の先頭の行です。修正した箇所に印が付いています
行
2000481Peña Muñoz2024-02-03T10:15:00Z1234.5true
3000482José Ángel Ruiz2024-02-15T16:40:00Z99.9falseEntrega en la tarde
4000483Zoë Ortíz2024-02-29T09:05:00Z12true
5000484Ñuño Castañeda2024-03-11T13:30:00Z980.75sí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;

修正

  1. "pedido" の先頭のゼロを保持しました。000481 は 000481 のまま、テキストとして保存します。
  2. "pagado" には「はい/いいえ」の語 (sí) があるため、ブール値として保存しました。

ファイルはこのコンピューター上で変換され、アップロードされることはありません。

その他のサンプル:

JSON から Oracle へ、列ごとに

上のサンプル pedidos_2024.json を IntoSQL が Oracle 用に書き出した結果です。各列のファイル内の内容、付く型、最初の値がスクリプトでどうなるかを示します。

ファイル内最初の値列Oracle の型スクリプト内
pedido000481pedidoVARCHAR2(8 CHAR)'000481'
clientePeña MuñozclienteVARCHAR2(16 CHAR)'Peña Muñoz'
fecha2024-02-03T10:15:00ZfechaTIMESTAMP WITH TIME ZONETIMESTAMP '2024-02-03 10:15:00 +00:00'
total1234.5totalNUMBER(6,2)1234.5
pagadotruepagadoNUMBER(1)1
notas-notasVARCHAR2(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 ドキュメントは全体を一度に読むため、上限はブラウザがこのページに割り当てるメモリです。デスクトップアプリとコマンドラインはどんなサイズのファイルも扱えます。