Ir para o conteúdo
AZ Tools

Gerador JSON → SQL INSERT

Cola um array JSON (ou um único objeto) e emite um insert SQL pronto pra rodar. Colunas são a união de todas as chaves; linhas faltando coluna recebem NULL. Strings são escapadas com aspas simples, números e booleans viram literais, objetos / arrays aninhados são serializados pra JSON. `ON CONFLICT` opcional (Postgres / SQLite) ou `ON DUPLICATE KEY UPDATE` (MySQL) pra você jogar a saída direto num job de sync.

SQL(3)
INSERT INTO "users" ("id", "name", "email", "verified", "joined")
VALUES
  (1, 'Alice', 'alice@example.com', TRUE, '2024-01-15'),
  (2, 'Bob', 'bob@example.com', FALSE, '2024-03-22'),
  (3, 'Carol', NULL, TRUE, '2024-06-01');

Strings escapadas dobrando aspas simples — seguro pros quatro dialetos.

Como usar

  1. Cole um array JSON de objetos (ou um único objeto).
  2. Defina o nome da tabela e o dialeto SQL.
  3. Alterne VALUES multi-linha pra uma única statement, ou desligue pra um INSERT por linha. Alterne upsert se quiser ON CONFLICT / ON DUPLICATE KEY UPDATE.

Perguntas frequentes

Como objetos aninhados são tratados?
Serializados pra JSON e inseridos como string entre aspas. Colunas PostgreSQL e MySQL do tipo `JSON` / `JSONB` aceitam diretamente; no SQLite entram como TEXT.
Diferença entre multi-linha e um INSERT por linha?
Multi-linha produz uma única `INSERT INTO ... VALUES (…), (…), (…);` que roda muito mais rápido em carga em massa. Por linha produz N statements — mais prático quando você quer comentar linhas individuais ou espera falhas parciais.
Esse escape basta para rodar o SQL com segurança?
Ele escapa aspas simples para que as instruções sejam sintaticamente válidas, o que não é a mesma coisa que ser seguro contra entrada hostil. SQL gerado é apenas texto: leia antes de executar e, quando os dados vierem de um lugar que você não controla, carregue-os com instruções parametrizadas ou com um carregador em massa como COPY ou LOAD DATA, em vez de colar um script gerado num console.
Por que meus números saíram entre aspas, ou meus ids perderam dígitos?
Os tipos seguem o JSON, não a sua tabela. Um valor escrito como "42" no JSON gera um literal entre aspas mesmo que a coluna seja inteira: faça o cast no SQL ou corrija o JSON. Identificadores grandes são a armadilha oposta: se chegaram como números JSON, podem já ter perdido os últimos dígitos antes de chegar aqui — por isso ids devem viajar como strings.

Ferramentas relacionadas