Conversor de CSV para SQL (gerador de instruções INSERT)

Converte arquivos CSV em instruções SQL INSERT e CREATE TABLE. Compatível com os dialetos MySQL, PostgreSQL e SQLite, com detecção automática do tipo de coluna (inteiro, decimal, texto). A conversão ocorre inteiramente no navegador; os dados nunca são enviados a um servidor.

Delimitador
Usar a primeira linha como cabeçalho
Nome da tabela
Dialeto SQL
Gerar também a instrução CREATE TABLE
Tratar valores vazios como NULL
Combinar linhas em uma única instrução INSERT


            
            Copiado!
            
          

Digite dados CSV para ver aqui o SQL gerado.

Como uma linha do CSV corresponde a uma instrução INSERT

Uma linha do CSV name,age,city
Instrução INSERT resultante INSERT INTO `my_table` (`name`, `age`, `city`) VALUES ('Alice', 30, 'Tokyo');

Quando a primeira linha é usada como cabeçalho, cada linha seguinte se torna uma instrução INSERT que nomeia as colunas do cabeçalho. Colunas detectadas como inteiro ou decimal são exibidas como números sem aspas, e as demais são exibidas como strings entre aspas simples.

O que é o conversor de CSV para SQL (gerador de instruções INSERT)

Quando é preciso carregar uma planilha CSV em um banco de dados, escrever uma instrução INSERT para cada linha manualmente não é uma tarefa prática, especialmente quando o volume de dados cresce. Esta ferramenta lê o CSV colado e converte cada linha automaticamente em uma instrução INSERT pronta para uso. A detecção de tipo de coluna não se baseia em uma única linha: todas as linhas de dados são examinadas antes de decidir se uma coluna é inteira, decimal ou texto, o que permite gerar também uma instrução CREATE TABLE coerente com os dados reais.

A ferramenta é compatível com três dialetos de banco de dados — MySQL, PostgreSQL e SQLite — e ajusta automaticamente o caractere usado para delimitar identificadores e os nomes dos tipos de acordo com o dialeto escolhido. Aspas simples presentes nos valores são escapadas seguindo a convenção padrão do SQL, de modo que o resultado pode ser executado diretamente, sem ajustes manuais. Todo o processamento acontece no navegador: nenhum dado do CSV é enviado a um servidor, o que torna a ferramenta segura mesmo para planilhas com informações sensíveis.

Como gerar instruções INSERT a partir de um CSV

  1. Cole os dados CSV Cole o conteúdo CSV no campo de entrada. Se os dados forem separados por tabulação, altere o delimitador para "Tabulação" antes de continuar.
  2. Defina o nome da tabela e o dialeto Informe o nome da tabela de destino e escolha o dialeto do banco de dados que você utiliza. O caractere de aspas dos identificadores é ajustado automaticamente.
  3. Escolha as opções de saída Decida se deseja gerar também a instrução CREATE TABLE, se valores vazios devem virar NULL e se as linhas devem ser combinadas em uma única instrução INSERT.
  4. Copie e execute Copie o SQL gerado e cole-o no seu cliente de banco de dados para executá-lo. Se o volume for grande, considere dividir a execução em blocos menores.

Dicas para aproveitar melhor

  • O tipo de cada coluna (inteiro, decimal, texto) é inferido automaticamente examinando todas as linhas de dados dessa coluna. Se mesmo um único valor não for numérico, a coluna inteira é tratada como tipo texto.
  • Ao ativar "Combinar linhas em uma única instrução INSERT", gera-se uma única instrução `INSERT INTO ... VALUES (...), (...), (...);`, reduzindo o número de execuções necessárias para carregar grandes conjuntos de dados.
  • O MySQL usa acento grave (`) para delimitar identificadores, enquanto PostgreSQL e SQLite usam aspas duplas ("). O estilo de aspas muda automaticamente conforme o dialeto SQL selecionado.
  • Ao desativar "Tratar valores vazios como NULL", as colunas de texto exibem strings vazias ('') e as colunas numéricas exibem NULL em seu lugar.

Quando usar o conversor de CSV para SQL

Preparar dados de teste (seed data)

Dados criados em uma planilha eletrônica podem ser convertidos diretamente em instruções INSERT, sem precisar escrever um seeder completo. É ideal para verificações pontuais e conjuntos de dados pequenos ou médios.

Migrar dados mestres entre sistemas

Um CSV exportado de um sistema legado pode ser transformado no formato necessário para popular um novo banco de dados, com a instrução CREATE TABLE gerada junto para acelerar a configuração inicial.

Conferir o tipo inferido de cada coluna

Observar o tipo detectado automaticamente ajuda a identificar colunas com valores inesperados: se uma coluna que deveria ser numérica aparece como texto, é sinal de que há algum valor fora do padrão misturado nos dados.

Comparar a sintaxe entre dialetos SQL

Ao alternar o dialeto com o mesmo CSV, é possível comparar lado a lado as diferenças reais de aspas de identificadores e de nomes de tipo entre MySQL, PostgreSQL e SQLite.

Termos relacionados à carga de dados em SQL

Instrução INSERT
Comando SQL usado para adicionar uma nova linha a uma tabela, associando cada nome de coluna ao valor correspondente.
Instrução CREATE TABLE
Comando SQL que cria uma tabela nova, definindo os nomes das colunas e seus tipos. É necessária quando a tabela de destino ainda não existe no banco de dados.
Dialeto SQL
Conjunto de diferenças de sintaxe entre produtos de banco de dados, como o caractere usado para delimitar identificadores e a grafia dos nomes de tipo.
NULL
Valor especial que representa a ausência de dado. É diferente de uma string vazia, por isso é preciso decidir explicitamente como tratar campos em branco.
Escape
Processo que faz um caractere com significado sintático especial ser interpretado como um caractere literal. No caso desta ferramenta, aplica-se às aspas simples presentes nos valores.
Inserção em lote (bulk insert)
Técnica de carregar várias linhas em uma única instrução INSERT, reduzindo o número de análises de sintaxe e confirmações de transação necessárias, o que acelera a execução.

Perguntas frequentes

Cada valor dessa coluna em todas as linhas de dados é examinado: se todos forem inteiros, a coluna se torna INTEGER; se todos forem decimais, torna-se REAL; caso contrário (texto ou valores mistos), torna-se TEXT. Esse tipo detectado é usado diretamente na instrução CREATE TABLE gerada.

Sim. Ao selecionar PostgreSQL ou SQLite em "Dialeto SQL", as aspas de identificadores (aspas duplas) e os nomes de tipo são gerados de acordo com cada banco de dados respectivo.

Seguindo a convenção padrão de escape do SQL, as aspas simples são automaticamente duplicadas (''), de modo que a instrução resultante pode ser executada como está.

Não. Toda a conversão ocorre via JavaScript no seu navegador, e o conteúdo CSV inserido nunca é transmitido a nenhum servidor. É seguro usar mesmo com dados sensíveis.
Tool-kun

Curiosidade — por que instruções INSERT combinadas são mais rápidas

A opção desta ferramenta para "combinar linhas em uma única instrução INSERT" (`INSERT INTO t VALUES (1,'a'), (2,'b'), ...;`) pode ser executada consideravelmente mais rápido do que emitir uma instrução INSERT por linha. Isso ocorre porque reduz a sobrecarga de analisar e planejar cada instrução SQL, além do custo das confirmações de transação que, do contrário, se repetiriam a cada instrução.

Dito isso, o MySQL possui um limite `max_allowed_packet`, e o PostgreSQL tem um limite semelhante no buffer de comunicação, portanto colocar linhas demais em uma única instrução INSERT pode ultrapassar esses limites e causar um erro. Na prática, dividir as instruções a cada algumas centenas ou milhares de linhas é a abordagem comum.

Carregar dados CSV em um banco de dados de teste costuma ser chamado de "seeding" nos fluxos de desenvolvimento, e muitos frameworks web — incluindo os seeders e factories do Laravel — oferecem mecanismos dedicados exatamente para essa tarefa. Um conversor rápido como este continua útil para verificações em pequena escala ou migrações de dados que não justificam montar toda essa infraestrutura.