Convertir JSON a Oracle
Suelta tu archivo JSON y obtén un script de Oracle con sentencias CREATE TABLE e INSERT. Cada columna recibe un tipo, y cada corrección se detalla con su fila y columna.
4 filas convertidas, 2 correcciones, ninguna rechazada
| Fila | ||||||
|---|---|---|---|---|---|---|
| 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;
Correcciones
- Se conservaron los ceros a la izquierda en "pedido": 000481 sigue siendo 000481, guardado como texto.
- "pagado" contiene palabras de sí y no (sí); se guarda como booleano.
Tu archivo se convierte en esta computadora y nunca se sube.
Otros ejemplos:
De JSON a Oracle, columna por columna
El ejemplo de arriba, pedidos_2024.json, tal como IntoSQL lo escribe para Oracle: qué contiene cada columna en el archivo, qué tipo recibe y cómo queda su primer valor en el script.
| En el archivo | Primer valor | Columna | Tipo en Oracle | En el script |
|---|---|---|---|---|
| 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 |
Carga el script en Oracle
La descarga es un archivo .sql simple. Ejecútalo con las herramientas propias de Oracle.
Desde una terminal
sqlplus user@//localhost/mydb @pedidos_2024.oracle.sqlEl script desactiva las variables de sustitución (SET DEFINE OFF), así que un ampersand en tus datos sigue siendo un ampersand.
Desde una herramienta de base de datos
En SQL Developer, abre el script y elige Run Script (F5).
Qué saber sobre los archivos JSON y Oracle
Qué lee IntoSQL en los archivos JSON
- El archivo puede ser un arreglo de objetos, un objeto que guarda ese arreglo bajo una clave como data, o un objeto por línea (NDJSON).
- Cada clave se vuelve una columna. Los objetos y arreglos dentro de un valor se guardan como texto JSON.
- Los números conservan sus dígitos exactos, y las fechas ISO 8601 se vuelven fechas o marcas de tiempo.
Qué saber sobre Oracle
- Los valores sí y no se vuelven NUMBER(1), con 1 o 0, que acepta cualquier versión de Oracle.
- El texto es VARCHAR2 con una longitud en caracteres; a partir de 4000 bytes se vuelve CLOB. Oracle guarda el texto vacío como NULL.
- Las filas se insertan con INSERT ALL, y los valores largos se dividen para que SQL*Plus los acepte.
Cómo se guarda cada tipo de valor en Oracle
| Valor | Oracle |
|---|---|
| Sí y no | NUMBER(1) |
| Números enteros | NUMBER(10) |
| Números enteros grandes | NUMBER(19) |
| Decimales | NUMBER(p,s) |
| Números de punto flotante | BINARY_DOUBLE |
| Fechas | DATE |
| Horas del día | INTERVAL DAY(0) TO SECOND |
| Fechas con hora | TIMESTAMP |
| Fechas con hora y zona horaria | TIMESTAMP WITH TIME ZONE |
| Texto | VARCHAR2(n CHAR)CLOB |
Preguntas sobre JSON a Oracle
¿No encuentras la respuesta? Escríbenos desde la página de contacto y te responde una persona. Página de contacto
¿Cómo convierto JSON a Oracle?
Suelta tu archivo en el convertidor al inicio de esta página. Encuentra el encabezado, lee cada valor y escribe el script de Oracle, con la lista de cada corrección que hizo. Descarga el script y ejecútalo con SQL*Plus.
¿Qué forma debe tener el archivo JSON?
Un arreglo de objetos, un objeto que guarda ese arreglo bajo una clave como data, o un objeto por línea (NDJSON). Cada clave se vuelve una columna.
¿Qué tipos de Oracle usa?
Los valores sí y no pasan a NUMBER(1), los enteros a NUMBER(10), los decimales a NUMBER(p,s), las fechas a DATE, las fechas con hora a TIMESTAMP y el texto a VARCHAR2(n CHAR). Los tamaños salen del valor más largo de cada columna.
¿Conserva los ceros a la izquierda en Oracle?
Sí. Un código como 000481 se queda como texto, así que Oracle lo guarda como VARCHAR2(8 CHAR) y el script lo escribe como '000481'.
¿Puede cargar los datos en Oracle sin un script?
No. Descarga el script y ejecútalo con SQL*Plus. La carga sin script funciona con PostgreSQL, MySQL, MariaDB y SQLite, desde la app de escritorio o la línea de comandos.
¿Qué tan grande puede ser el archivo JSON?
NDJSON, un objeto por línea, se lee a medida que llega, así que en el navegador funcionan archivos de varios gigabytes. Un documento JSON se lee completo, así que su límite es la memoria que el navegador le da a esta página. La app de escritorio y la línea de comandos aceptan archivos de cualquier tamaño.