Conversor de CSV para SQL

Inserir dados CSV em um banco de dados geralmente significa iniciar uma ferramenta de carregamento ou escrever comandos COPY / LOAD DATA INFILE que funcionam apenas em arquivos locais. Para conjuntos de dados pequenos, dezenas, centenas, algumas milhares de linhas, instruções INSERT simples que você pode colar em qualquer console SQL são frequentemente mais rápidas. Esta ferramenta pega seu CSV, pega um nome de tabela e produz um INSERT por linha com identificadores entre crases e valores entre aspas simples que são seguros para executar.

Como o SQL é montado

  1. 1

    Cole o CSV

    CSV padrão com linha de cabeçalho opcional. O parser lida com células entre aspas com separadores incorporados.

  2. 2

    Defina o nome da tabela

    Caracteres não alfanuméricos no nome da tabela são substituídos por sublinhados; volta para `my_table` se estiver vazio.

  3. 3

    As colunas vêm do cabeçalho

    Se o modo de cabeçalho estiver ativado, a linha 1 se torna a lista de colunas. Caso contrário, as colunas são nomeadas `column_1`, `column_2`, etc.

  4. 4

    Um INSERT por linha de dados

    Cada linha se torna `INSERT INTO table (cols) VALUES (...)`. Os valores são entre aspas simples e as aspas internas são duplicadas.

Dialeto, citação e quando recorrer a outra coisa

O gerador tem como alvo SQL no estilo MySQL com crases em torno dos identificadores e aspas simples em torno dos valores. A maioria dos bancos de dados aceitará com ajustes menores.

Resumo do dialeto

Banco de dados Citação de identificadores Notas
MySQL crases Funciona sem alterações.
MariaDB crases Funciona sem alterações.
PostgreSQL aspas duplas Substitua ` por " antes de executar.
SQLite aspas duplas Substitua ` por " ou remova a citação de identificadores.
SQL Server colchetes Substitua ` por []; cuidado com N'...' para Unicode.

Como os valores são escapados

Todos os valores são entre aspas simples e quaisquer aspas simples embutidas são duplicadas (O'Brien se torna 'O''Brien'). Essa é a maneira SQL-92 e funciona em todos os bancos de dados principais. O conversor não faz conversão de tipo, tudo é emitido como um literal de string, então a conversão implícita do banco de dados transformará '42' em um inteiro quando a coluna for INT.

Dicas para importações limpas

  • Crie a tabela primeiro. O conversor emite apenas instruções INSERT, não CREATE TABLE. Combine com um esquema que você define manualmente ou gera a partir do seu ORM.
  • Divida arquivos grandes. Cole de 500 a 1000 linhas por vez se seu cliente SQL tiver um limite de tamanho de instrução.
  • Envolva em uma transação. Para qualquer coisa além de algumas centenas de linhas, envolva a colagem com BEGIN; e COMMIT; (ou START TRANSACTION; / COMMIT;). Muito mais rápido do que autocomitar cada instrução.

Quando pular a geração de SQL

Se seu arquivo tiver mais de ~50.000 linhas, carregadores em massa nativos (COPY no Postgres, LOAD DATA INFILE no MySQL, bcp no SQL Server) são uma ordem de magnitude mais rápidos do que INSERTs scriptados. Esta ferramenta é para importações rápidas, semeação de dados de teste e migrações pontuais.

Perguntas frequentes

Não. Ela emite apenas instruções INSERT. Defina o esquema você mesmo com CREATE TABLE antes, assim você mantém o controle sobre os tipos de coluna, comprimentos e restrições em vez de deixar o conversor adivinhar.

Com uma mudança: substitua as crases em torno dos nomes de tabela e coluna por aspas duplas. Os valores são entre aspas simples e funcionarão inalterados em qualquer dialeto SQL-92.

Aspas simples dentro dos valores são duplicadas (O''Brien), que é o padrão de escape SQL. Barras invertidas, sinais de porcentagem e sublinhados passam literalmente, eles se tornam especiais apenas em padrões LIKE.

Sim. O CSV é enviado ao nosso servidor para gerar o SQL. Ele não é armazenado e não é adicionado ao link da página.

Ferramentas relacionadas

Ferramenta disponível em outros idiomas