Chuyển đến nội dung

Chuyển JSON sang Oracle

Thả tệp JSON để nhận tập lệnh Oracle với câu lệnh CREATE TABLE và INSERT. Mỗi cột được gán kiểu, và mọi bản sửa đều được liệt kê kèm hàng và cột.

Tệp của bạn
jsonpedidos_2024.jsonTệp mẫu, 771 B
Cơ sở dữ liệu của bạn

Đã chuyển đổi 4 hàng, 2 bản sửa, không hàng nào bị từ chối

Hiển thị
Những hàng đầu tiên của pedidos_2024.json, mỗi bản sửa đều được đánh dấu
Hàng
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;

Bản sửa

  1. Giữ số 0 ở đầu trong "pedido": 000481 vẫn là 000481, lưu dưới dạng văn bản.
  2. "pagado" chứa các từ có và không (sí), lưu dưới dạng boolean.

Tệp được chuyển đổi ngay trên máy tính này và không bao giờ được tải lên.

Mẫu khác:

Từ JSON sang Oracle, từng cột một

Tệp mẫu ở trên, pedidos_2024.json, khi IntoSQL viết cho Oracle: mỗi cột chứa gì trong tệp, kiểu dữ liệu nhận được và giá trị đầu tiên xuất hiện thế nào trong tập lệnh.

Trong tệpGiá trị đầu tiênCộtKiểu OracleTrong tập lệnh
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

Nạp tập lệnh vào Oracle

Tệp tải xuống là một tệp .sql thông thường. Chạy nó bằng công cụ riêng của Oracle.

Từ terminal

sqlplus user@//localhost/mydb @pedidos_2024.oracle.sql

Tập lệnh tắt biến thay thế (SET DEFINE OFF), nên dấu & trong dữ liệu vẫn là dấu &.

Từ công cụ cơ sở dữ liệu

Trong SQL Developer, mở tập lệnh và chọn Run Script (F5).

Những điều cần biết về tệp JSON và Oracle

IntoSQL đọc gì trong tệp JSON

  • Tệp có thể là một mảng đối tượng, một đối tượng chứa mảng đó dưới một khóa như data, hoặc mỗi dòng một đối tượng (NDJSON).
  • Mỗi khóa trở thành một cột. Đối tượng và mảng bên trong một giá trị được giữ dưới dạng văn bản JSON.
  • Số giữ nguyên từng chữ số, và ngày ISO 8601 trở thành ngày hoặc dấu thời gian.

Những điều cần biết về Oracle

  • Giá trị có và không trở thành NUMBER(1), chứa 1 hoặc 0, mà mọi phiên bản Oracle đều chấp nhận.
  • Văn bản là VARCHAR2 với độ dài tính theo ký tự; trên 4000 byte sẽ thành CLOB. Oracle lưu văn bản rỗng là NULL.
  • Các hàng được chèn bằng INSERT ALL, và giá trị dài được chia nhỏ để SQL*Plus chấp nhận.

Cách mỗi loại giá trị được lưu trong Oracle

Giá trịOracle
Có và khôngNUMBER(1)
Số nguyênNUMBER(10)
Số nguyên lớnNUMBER(19)
Số thập phânNUMBER(p,s)
Số dấu phẩy độngBINARY_DOUBLE
NgàyDATE
Giờ trong ngàyINTERVAL DAY(0) TO SECOND
Ngày kèm giờTIMESTAMP
Ngày kèm giờ và độ lệch múi giờTIMESTAMP WITH TIME ZONE
Văn bảnVARCHAR2(n CHAR)CLOB

Câu hỏi về JSON sang Oracle

Chưa có câu trả lời ở đây? Hãy viết cho chúng tôi từ trang liên hệ, sẽ có người trả lời. Trang liên hệ

Làm sao để chuyển JSON sang Oracle?

Thả tệp vào trình chuyển đổi ở đầu trang này. Nó tìm tiêu đề, đọc mọi giá trị và viết tập lệnh Oracle, kèm danh sách từng bản sửa. Tải tập lệnh xuống và chạy bằng SQL*Plus.

Tệp JSON cần có cấu trúc thế nào?

Một mảng đối tượng, một đối tượng chứa mảng đó dưới một khóa như data, hoặc mỗi dòng một đối tượng (NDJSON). Mỗi khóa trở thành một cột.

Nó dùng những kiểu Oracle nào?

Giá trị có/không thành NUMBER(1), số nguyên thành NUMBER(10), số thập phân thành NUMBER(p,s), ngày thành DATE, ngày kèm giờ thành TIMESTAMP và văn bản thành VARCHAR2(n CHAR). Kích thước lấy theo giá trị dài nhất trong mỗi cột.

Số 0 ở đầu có được giữ trong Oracle không?

Có. Một mã như 000481 vẫn là văn bản, nên Oracle lưu nó dưới dạng VARCHAR2(8 CHAR) và tập lệnh viết nó là '000481'.

Có thể nạp dữ liệu vào Oracle mà không cần tập lệnh không?

Không. Hãy tải tập lệnh xuống và chạy bằng SQL*Plus. Nạp không cần tập lệnh hoạt động với PostgreSQL, MySQL, MariaDB và SQLite, từ ứng dụng máy tính hoặc dòng lệnh.

Tệp JSON có thể lớn đến đâu?

NDJSON, mỗi dòng một đối tượng, được đọc theo luồng, nên tệp vài gigabyte vẫn chạy được trong trình duyệt. Tài liệu JSON được đọc toàn bộ, nên giới hạn là bộ nhớ trình duyệt cấp cho trang này. Ứng dụng máy tính và dòng lệnh nhận tệp ở mọi kích thước.