Saltar al contenido

Convertir JSON a SQL

Suelta tu archivo JSON y elige tu base de datos para obtener un script SQL con sentencias CREATE TABLE e INSERT. Cada columna recibe un tipo, y cada corrección se detalla con su fila y columna.

Tu archivo
jsonpedidos_2024.jsonArchivo de ejemplo, 771 B
Tu base de datos

4 filas convertidas, 2 correcciones, ninguna rechazada

Mostrar
Las primeras filas de pedidos_2024.json, con cada corrección marcada
Fila
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 PostgreSQL.

SET client_encoding = 'UTF8';
BEGIN;

CREATE TABLE pedidos_2024 (
    pedido text NOT NULL,
    cliente text NOT NULL,
    fecha timestamptz NOT NULL,
    total numeric(6,2) NOT NULL,
    pagado boolean NOT NULL,
    notas text
);

INSERT INTO pedidos_2024 (pedido, cliente, fecha, total, pagado, notas) VALUES
('000481', 'Peña Muñoz', '2024-02-03 10:15:00+00:00', 1234.5, TRUE, NULL),
('000482', 'José Ángel Ruiz', '2024-02-15 16:40:00+00:00', 99.9, FALSE, 'Entrega en la tarde'),
('000483', 'Zoë Ortíz', '2024-02-29 09:05:00+00:00', 12, TRUE, NULL),
('000484', 'Ñuño Castañeda', '2024-03-11 13:30:00+00:00', 980.75, TRUE, 'Factura con "RFC"');

COMMIT;

Correcciones

  1. Se conservaron los ceros a la izquierda en "pedido": 000481 sigue siendo 000481, guardado como texto.
  2. "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:

Un archivo JSON, seis bases de datos

El ejemplo de arriba, pedidos_2024.json, y el tipo que recibe cada una de sus columnas en cada base de datos.

En el archivoPrimer valorPostgreSQLMySQLMariaDBSQLiteSQL ServerOracle
pedido000481textvarchar(8)varchar(8)TEXTnvarchar(8)VARCHAR2(8 CHAR)
clientePeña Muñoztextvarchar(16)varchar(16)TEXTnvarchar(16)VARCHAR2(16 CHAR)
fecha2024-02-03T10:15:00ZtimestamptzdatetimedatetimeDATETIMEdatetimeoffsetTIMESTAMP WITH TIME ZONE
total1234.5numeric(6,2)decimal(6,2)decimal(6,2)NUMERIC(6,2)decimal(6,2)NUMBER(6,2)
pagadotruebooleantinyint(1)tinyint(1)BOOLEANbitNUMBER(1)
notas-textvarchar(32)varchar(32)TEXTnvarchar(32)VARCHAR2(32 CHAR)

Carga el script en tu base de datos

La descarga es un archivo .sql simple. Cada base de datos lo ejecuta con sus propias herramientas.

  • PostgreSQL

    psql -v ON_ERROR_STOP=1 -d mydb -f pedidos_2024.postgresql.sql

    ON_ERROR_STOP hace que psql se detenga en el primer error. El script corre en una sola transacción, así que una carga fallida deja la base de datos como estaba.

  • MySQL

    mysql --default-character-set=utf8mb4 mydb < pedidos_2024.mysql.sql

    El script define utf8mb4 por sí mismo; el flag hace que el cliente lo envíe igual, así que los acentos llegan intactos.

  • MariaDB

    mariadb --default-character-set=utf8mb4 mydb < pedidos_2024.mariadb.sql

    El script define utf8mb4 por sí mismo; el flag hace que el cliente lo envíe igual, así que los acentos llegan intactos.

  • SQLite

    sqlite3 pedidos_2024.db < pedidos_2024.sqlite.sql

    El archivo de la base de datos se crea si no existe. El convertidor también descarga una base de datos .sqlite lista, sin ningún comando.

  • SQL Server

    sqlcmd -S localhost -d mydb -f 65001 -i pedidos_2024.sql_server.sql

    -f 65001 lee el archivo como UTF-8, así que los acentos y la ñ llegan tal como están escritos.

  • Oracle

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

    El script desactiva las variables de sustitución (SET DEFINE OFF), así que un ampersand en tus datos sigue siendo un ampersand.

La línea de comandos carga archivos directo en una base de datos SQLite gratis. Con IntoSQL Pro, ella y la app de escritorio también cargan en PostgreSQL, MySQL y MariaDB. Para SQL Server y Oracle, ejecuta el script.

Qué saber sobre los archivos JSON y cada base de datos

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 cada base de datos

  • Elige la base de datos una vez abierto el archivo: cada una recibe los tipos que admite.

Cómo se guarda cada tipo de valor en cada base de datos

ValorPostgreSQLMySQLMariaDBSQLiteSQL ServerOracle
Sí y nobooleantinyint(1)tinyint(1)BOOLEANbitNUMBER(1)
Números enterosintegerintintINTEGERintNUMBER(10)
Números enteros grandesbigintbigintbigintINTEGERbigintNUMBER(19)
Decimalesnumeric(p,s)decimal(p,s)doubledecimal(p,s)doubleNUMERIC(p,s)TEXTdecimal(p,s)NUMBER(p,s)
Números de punto flotantedouble precisiondoubledoubleREALfloatBINARY_DOUBLE
FechasdatedatedateDATEdateDATE
Horas del díatimetime(6)timetime(6)timeTIMEtimeINTERVAL DAY(0) TO SECOND
Fechas con horatimestampdatetime(6)datetimedatetime(6)datetimeDATETIMEdatetime2TIMESTAMP
Fechas con hora y zona horariatimestamptzdatetime(6)datetimedatetime(6)datetimeDATETIMEdatetimeoffsetTIMESTAMP WITH TIME ZONE
Textotextvarchar(n)textmediumtextlongtextvarchar(n)textmediumtextlongtextTEXTnvarchar(n)nvarchar(max)VARCHAR2(n CHAR)CLOB

Preguntas sobre JSON a SQL

¿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 SQL?

Suelta tu archivo en el convertidor al inicio de esta página y elige tu base de datos: PostgreSQL, MySQL, MariaDB, SQLite, SQL Server u Oracle. Cada una recibe los tipos que admite. Descarga el script y ejecútalo en tu base de datos.

¿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 usa en cada base de datos?

Cada base de datos recibe los suyos: los valores sí y no son boolean en PostgreSQL, tinyint(1) en MySQL y MariaDB, bit en SQL Server y NUMBER(1) en Oracle. La tabla de esta página muestra cada tipo de valor.

¿Conserva los ceros a la izquierda?

Sí. Un código como 000481 se queda como texto en todas las bases de datos, escrito como '000481', así que no se pierde ningún cero.

¿Puede cargar los datos sin un script?

Sí. La línea de comandos carga en SQLite gratis, y con IntoSQL Pro la app de escritorio y la línea de comandos cargan en PostgreSQL, MySQL y MariaDB. Para SQL Server y Oracle, ejecuta el script.

¿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.