JSON para SQL INSERT
Este conversor escreve instruções SQL INSERT a partir de um array JSON de registros no seu navegador. Nomes de colunas são entre aspas duplas, strings são escapadas com aspas simples duplicadas, null se torna NULL, e booleanos se tornam TRUE ou FALSE. Os registros devem compartilhar o mesmo conjunto de chaves; nada sai da aba.
JSON para SQL INSERT: explicação
Dados de teste vivem em JSON — fixtures de API, relatórios exportados, registros de teste —, mas o banco de dados quer instruções INSERT. A conversão é mecânica e vale a pena ser feita com precisão: cada registro se torna uma linha, cada chave se torna uma coluna, e cada valor precisa chegar como um literal SQL tipado corretamente. Erre no escape e a instrução falha imediatamente; erre de forma sutil e ela falha três semanas depois, no primeiro nome com apóstrofo.
Este conversor emite instruções INSERT multi-linha: uma lista de colunas entre aspas duplas, depois um tuple VALUES por registro. Aspas duplas são o padrão SQL para identificadores, e strings com aspas simples têm qualquer aspa embutida duplicada — a forma O''Brien que todo parser compatível lê como uma única aspa literal. Números permanecem nus, true e false se tornam TRUE e FALSE, e JSON null se torna a palavra-chave não entre aspas NULL. Você nomeia a tabela de destino no campo da ferramenta; o exemplo abaixo usa people.
Tudo isso acontece nesta aba do navegador. Seus registros são parseados com o próprio JSON.parse do navegador, o texto SQL é montado na memória, e nenhuma requisição sai da página — o painel Network do DevTools não mostra nada durante uma conversão, e a Content-Security-Policy do site proíbe conexões de saída de qualquer maneira.
Se suas linhas estão em uma exportação de planilha em vez de JSON, o Conversor de CSV para SQL aplica as mesmas regras de aspa em cima de um parser RFC 4180 com inferência de tipo por célula.
O conversor só aceita um array JSON estrito, então se o payload veio de um script ou de um arquivo de log, verifique-o com o Validador de JSON primeiro; o erro que você vê lá é o erro que esta ferramenta levantaria.
Como a conversão realmente funciona
O motor parseia seu JSON com JSON.parse — o parser RFC 8259 do próprio navegador — e então faz três verificações antes de emitir qualquer coisa, porque cada modo de falha produz SQL que é inválido ou errado silenciosamente:
- Formato: o nível superior deve ser um cujo cada elemento é um objeto; um objeto solto ou um array aninhado é recusado com uma mensagem nomeando o índice ofensor.
- Chaves consistentes: cada registro deve ter o mesmo conjunto de chaves. Uma instrução INSERT declara uma única lista de colunas, então um registro carregando uma chave que os outros não possuem não tem para onde ir — o conversor relata a chave e a linha em vez de inventar NULLs que você não pediu.
- Valores planos: objetos e arrays aninhados dentro de um registro não têm equivalente literal SQL simples, então são recusados com o caminho nomeado, em vez de serem transformados em string por trás das suas costas.
O mapeamento literal
Cada valor é renderizado por seu tipo JSON, usando apenas formas SQL padrão:
- Uma nota de tipografia merece sua própria linha: TRUE e FALSE são literais booleanos padrão SQL, lidos nativamente por PostgreSQL e SQLite e lidos como 1 e 0 por MySQL. Motores sem literais booleanos — colunas BIT do SQL Server, por exemplo — querem 1 e 0 na instrução, então para esses destinos substitua as palavras-chave; as regras de aspa e NULL permanecem exatamente as mesmas.
| Valor JSON | Literal SQL |
|---|---|
| "Ada Lovelace" | 'Ada Lovelace' |
| "O'Brien" | 'O''Brien' — a aspa é duplicada |
| null | NULL, sem aspas |
| true / false | TRUE / FALSE |
| 9.5 | 9.5, um número nú |
| [1, 2] | Recusado, com o caminho nomeado |
Como a saída parece
O exemplo abaixo é o par exato que o botão “Carregar exemplo” do conversor produz para uma tabela chamada people: dois registros, quatro chaves consistentes, e um de cada literal interessante. O nome do segundo registro contém um apóstrofo, e a saída mostra a defesa padrão — a aspa é duplicada, que cada dialeto SQL lê como uma única aspa literal em vez do fim da string. Sua pontuação é null e se torna a palavra-chave NULL, não uma string vazia — a diferença entre uma ausência de medida e uma de comprimento zero. Copie o bloco como está ou baixe-o como um arquivo .sql; de qualquer forma é um script completo e terminado.
Como colocar as instruções no seu banco de dados
A saída é um script completo e terminado: cole em um console SQL, ou salve como um arquivo .sql para um executor de migrações. Para uma carga limpa, envolva em uma transação — BEGIN; antes, COMMIT; depois — para que uma falha no meio do script reverta toda a semente em vez de deixar metade de uma tabela para trás. Como as instruções usam apenas formas SQL padrão, o mesmo arquivo roda sem alterações no PostgreSQL, SQLite e MySQL com ANSI_QUOTES ativado; apenas a nota booleana acima precisa ser tocada para um motor específico.
- psql: cole no shell interativo, ou execute \i seed.sql a partir do prompt.
- sqlite3: execute .read seed.sql, ou pipe o arquivo a partir do seu shell.
- Ferramentas GUI: a maioria das janelas de consulta aceitam o script inteiro como um lote e relatam a contagem de linhas.
Perguntas frequentes
O conversor de JSON para SQL envia meus dados?
Não. O parse e a geração de SQL rodam nesta aba do navegador com JavaScript carregado uma vez na abertura da página. A página não tem endpoint para postar dados, e sua Content-Security-Policy bloqueia requisições de saída. A afirmação é verificável: abra DevTools, mude para o painel Network, converta um arquivo grande, e veja que nenhuma requisição aparece.
Por que nomes de coluna estão entre aspas duplas?
Identificadores entre aspas duplas são o padrão SQL, e é o que protege nomes de coluna que colidem com palavras-chave ou misturam maiúsculas e minúsculas — uma coluna chamada order ou UserName precisa de aspas para sobreviver. PostgreSQL, SQLite e SQL Server aceitam diretamente; MySQL também com o modo ANSI_QUOTES ativado, caso contrário use seu equivalente de crase.
Como aspas simples dentro de strings são escapadas?
Duplicando-as, que é o padrão: o nome O'Brien é emitido como 'O''Brien', e todo parser compatível lê o par como uma única aspa literal. Escape com barra invertida — como em O\'Brien — é uma extensão MySQL e produz um erro de sintaxe ou uma barra invertida solta em qualquer outro lugar, por isso este conversor não emite isso.
O que JSON null se torna no SQL?
A palavra-chave não entre aspas NULL — o próprio marcador SQL de um valor ausente, distinto da string vazia ''. Uma pontuação null significa nenhuma medida foi tomada; uma string vazia significa uma medida de comprimento zero. O conversor preserva essa distinção, porque colapsar as duas é um dos erros mais difíceis de desfazer em uma tabela populada.
Por que cada registro deve ter as mesmas chaves?
Porque uma instrução INSERT declara sua lista de colunas uma vez, e cada tuple VALUES deve preencher exatamente aquelas colunas. Um registro sem uma chave, ou carregando uma extra, não tem lugar definido naquela lista. O conversor relata a chave e o índice da linha ofensores para que você possa normalizar os registros primeiro — preenchendo deliberadamente lacunas com null se esse for o seu intento.
Por que um INSERT multi-linha em vez de uma instrução por linha?
Menos instruções, um parse, e tipicamente uma carga muito mais rápida — um único INSERT multi-linha é a forma que a maioria dos guias de carga em massa recomendam para semear. A saída termina com ponto e vírgula para ser um script completo, e se suas ferramentas preferem uma instrução por linha, cada tuple VALUES fica em sua própria linha, então dividir é uma pequena edição mecânica.
Quais ferramentas relacionadas devo usar a seguir?
- CSV para SQL INSERTConversor que roda no seu navegadorAbrir
- Converter JSON em CSVTransforma registros em planilha, mesmo aninhadosAbrir
- Converter CSV em JSONLê a exportação da planilha, aspas e tudoAbrir
- Formatar JSONIndenta, ordena chaves e remove comentáriosAbrir
- Validar JSONAponta o erro com linha e coluna e corrige num cliqueAbrir
- O que é JSONGuia em linguagem simplesAbrir