1. O Que E o Formato CSV
O CSV (Comma-Separated Values) e um dos formatos de troca de dados mais antigos e universais da computacao. Sua simplicidade — linhas de texto com valores separados por um caractere delimitador — o torna compativel com praticamente qualquer ferramenta: planilhas, bancos de dados, linguagens de programacao, sistemas de BI e plataformas de ETL.
Apesar do nome, o delimitador nao precisa ser a virgula. Ponto-virgula (comum em paises que usam a virgula como separador decimal, como o Brasil), tabulacao (TSV) e pipe (|) sao igualmente frequentes. Nossa ferramenta suporta todos esses formatos.
2. Anatomia de um SQL INSERT
O comando INSERT INTO e a instrucao SQL responsavel por adicionar registros em uma tabela. Sua forma basica e:
INSERT INTO nome_tabela (col1, col2, col3) VALUES (val1, val2, val3);
Para grandes volumes de dados, a forma multi-valores (batch insert) agrupa varios registros em um unico statement, o que e significativamente mais eficiente do que executar um INSERT por linha:
- Reduz o numero de round-trips ao banco de dados
- Melhora a performance em importacoes de grandes datasets
- Diminui o tamanho do arquivo .sql gerado
- E suportado por MySQL, PostgreSQL, SQLite e SQL Server (2008+)
3. Diferencas Entre Dialetos SQL
Embora o SQL seja padronizado pela ISO/ANSI, cada banco de dados tem suas proprias convencoes para delimitar identificadores (nomes de tabelas e colunas). Usar o delimitador errado pode causar erros de sintaxe ou comportamentos inesperados.
- MySQL: usa crases (`) para proteger identificadores que contenham espacos, palavras reservadas ou caracteres especiais.
- PostgreSQL: usa aspas duplas (") para identificadores. Sem aspas, o PostgreSQL converte nomes para minusculas automaticamente.
- SQLite: aceita aspas duplas (") para identificadores, mas e mais flexivel na sintaxe geral.
- SQL Server: usa colchetes ([]) como convencao padrao, embora tambem aceite aspas duplas com configuracoes especificas.
4. Deteccao Automatica de Tipos
Um dos maiores desafios ao converter CSV para SQL e determinar quais colunas sao numericas e quais sao textuais. Envolver um numero em aspas simples pode causar erros de tipo ou truncamento silencioso em bancos fortemente tipados.
Nossa ferramenta analisa todos os valores de cada coluna antes de gerar o SQL. Se todos os valores nao-nulos de uma coluna forem numericos (inteiros ou decimais), ela e tratada como coluna numerica e os valores sao inseridos sem aspas. Caso contrario, a coluna e tratada como texto e os valores sao protegidos com aspas simples e escapados corretamente.
Valores especiais reconhecidos como NULL incluem: celula vazia, NULL, null, nil, n/a, na — todos convertidos para o literal SQL NULL.
5. Insercao em Lote (Batch Insert)
A opcao de tamanho do lote controla quantas linhas sao agrupadas em cada statement INSERT. Escolher o valor certo depende do seu cenario:
- 1 linha por INSERT: util para depuracao, pois cada falha aponta para uma linha especifica. Mais lento para grandes volumes.
- 50 ou 100 linhas por INSERT: boa relacao entre performance e rastreabilidade. Recomendado para a maioria dos casos.
- Todas em um INSERT: maxima performance, mas pode exceder limites de tamanho de pacote do banco (ex: max_allowed_packet no MySQL).
6. Casos de Uso Comuns
A conversao de CSV para SQL e util em uma ampla variedade de situacoes:
- Migracao de dados: popular tabelas em um novo banco a partir de exportacoes de sistemas legados.
- Seed de banco de dados: criar dados iniciais para desenvolvimento ou testes automatizados.
- Importacao de planilhas: trazer dados de Excel ou Google Sheets para um banco relacional.
- ETL simplificado: como etapa intermediaria em pipelines de dados sem ferramentas dedicadas.
- Backup e restore: gerar scripts SQL portaveis a partir de exportacoes CSV de ferramentas de BI.
"Nossa ferramenta processa os dados inteiramente no navegador. Nenhum CSV e enviado a servidores — privacidade e seguranca por padrao."