DevToolPal
PT

Conversor de CSV para SQL

Transforme CSV em comandos CREATE TABLE e INSERT para MySQL, PostgreSQL, SQLite ou SQL Server, com tipos de coluna inferidos.

Roda localmente, nada é enviado

Opções

Entrada

0 caracteres · 0 B

Saída

0 caracteres · 0 B

O que faz

Carregar uma planilha em um banco de dados normalmente significa escrever à mão a definição da tabela e uma longa lista de comandos INSERT, escapando cada apóstrofo. Esta ferramenta faz isso por você: cole o CSV e receba um script SQL pronto para executar, com um comando CREATE TABLE e comandos INSERT de várias linhas agrupados em lotes.

Ela segue a RFC 4180: trata campos entre aspas, vírgulas e quebras de linha dentro das células e aspas duplicadas. As strings são escapadas corretamente para o banco escolhido, incluindo barras invertidas no MySQL e strings Unicode N'…' no SQL Server.

Como usar

  1. Cole o CSV, envie um arquivo .csv ou .tsv, ou clique em Exemplo.
  2. Digite o Nome da tabela. Use um ponto para o schema, como public.orders ou dbo.orders.
  3. Escolha o Dialeto: MySQL / MariaDB, PostgreSQL, SQLite ou SQL Server.
  4. Escolha as Linhas por INSERT e desative CREATE TABLE se a tabela já existir.
  5. Copie o SQL ou baixe como arquivo .sql e execute no seu cliente de banco de dados.

O delimitador é detectado automaticamente; você também pode definir vírgula, ponto e vírgula, tab ou barra vertical. Se a primeira linha tiver dados em vez de nomes de coluna, desative Primeira linha é o cabeçalho e as colunas serão chamadas column_1, column_2 e assim por diante.

Exemplo

Este CSV:

id,name,price,in_stock
1,Ada's Tea,4.50,true
2,Coffee,,false

vira este script para PostgreSQL:

CREATE TABLE "products" (
  "id" INTEGER,
  "name" TEXT,
  "price" NUMERIC(3, 2),
  "in_stock" BOOLEAN
);

INSERT INTO "products" ("id", "name", "price", "in_stock") VALUES
  (1, 'Ada''s Tea', 4.50, TRUE),
  (2, 'Coffee', NULL, FALSE);

O apóstrofo de Ada's é duplicado, o preço vazio vira NULL, e números e booleanos são escritos sem aspas.

Tipos e dialetos

  • MySQL / MariaDB: identificadores com crase, INT, DECIMAL, BOOLEAN, DATE, DATETIME, VARCHAR(255) ou TEXT; barras invertidas nas strings são escapadas.
  • PostgreSQL: identificadores entre aspas duplas, INTEGER, NUMERIC, BOOLEAN, DATE, TIMESTAMP e TEXT.
  • SQLite: identificadores entre aspas duplas e as classes de armazenamento do SQLite INTEGER, REAL e TEXT; booleanos são escritos como 1 e 0.
  • SQL Server: identificadores entre colchetes, INT, DECIMAL, BIT, DATE, DATETIME2 e NVARCHAR, com literais N'…' e no máximo 1000 linhas por INSERT.
  • Células vazias viram NULL. Desative Células vazias como NULL para manter strings vazias nas colunas de texto.
  • Revise os tipos inferidos antes de executar o script em dados de produção: uma coluna que só tem números pequenos na amostra pode precisar de um tipo maior depois.

Perguntas frequentes

› Quais bancos de dados são suportados?

MySQL (e MariaDB), PostgreSQL, SQLite e Microsoft SQL Server. O dialeto define como nomes de tabelas e colunas são delimitados, como as strings são escapadas, quais tipos de coluna são usados e como os booleanos são escritos.

› Como os tipos de coluna são escolhidos?

Cada coluna é analisada: inteiros viram INT ou BIGINT, decimais viram DECIMAL com precisão suficiente, true/false vira BOOLEAN (BIT no SQL Server), datas ISO viram DATE ou DATETIME e o resto vira texto. Números com zeros à esquerda, como CEPs, continuam como texto. Desative Detectar tipos para deixar todas as colunas como texto.

› Por que o SQL Server é limitado a 1000 linhas por INSERT?

O SQL Server rejeita listas VALUES com mais de 1000 linhas, então nesse dialeto lotes maiores são limitados a 1000. Outros bancos aceitam lotes maiores, mas de 100 a 1000 linhas por comando é um bom equilíbrio entre velocidade e tamanho.

› Meu CSV é enviado para algum servidor?

Não. A análise e a geração do SQL acontecem inteiramente no seu navegador, então os dados nunca saem do seu dispositivo.