Converter CSV para SQL
Solte seu arquivo CSV e escolha seu banco de dados para receber um script SQL com comandos CREATE TABLE e INSERT. Cada coluna recebe um tipo, e cada correção é listada com sua linha e coluna.
5 linhas convertidas, 8 correções, nenhuma rejeitada
| Linha | ||||||
|---|---|---|---|---|---|---|
| 5 | 00412 | Peña Muñoz | Mérida | 15/02/2024 | 1.234,50 | sí |
| 6 | 00413 | José Ángel Ruiz | León | 03/02/2024 | 99,90 | no |
| 7 | 00414 | Zoë Ortíz | Querétaro | 29/02/2024 | N/A | sí |
| 8 | 00415 | Ñuño Castañeda | Oaxaca | 28/02/2024 | 7,25 | no |
| 9 | 00416 | Iñaki Olaizola | Mazatlán | 11/03/2024 | 980,75 | sí |
-- Written by IntoSQL for PostgreSQL.
SET client_encoding = 'UTF8';
BEGIN;
CREATE TABLE ventas_2024 (
folio text NOT NULL,
cliente text NOT NULL,
ciudad text NOT NULL,
fecha date NOT NULL,
importe numeric(6,2),
pagado boolean NOT NULL
);
INSERT INTO ventas_2024 (folio, cliente, ciudad, fecha, importe, pagado) VALUES
('00412', 'Peña Muñoz', 'Mérida', '2024-02-15', 1234.50, TRUE),
('00413', 'José Ángel Ruiz', 'León', '2024-02-03', 99.90, FALSE),
('00414', 'Zoë Ortíz', 'Querétaro', '2024-02-29', NULL, TRUE),
('00415', 'Ñuño Castañeda', 'Oaxaca', '2024-02-28', 7.25, FALSE),
('00416', 'Iñaki Olaizola', 'Mazatlán', '2024-03-11', 980.75, TRUE);
COMMIT;
Correções
- O arquivo foi escrito em windows‑1252; ele foi convertido para UTF-8.
- O cabeçalho está na linha 4; as linhas acima dele ficaram de fora.
- A linha 10 ("TOTAL") é um total, então ficou de fora.
- Zeros à esquerda mantidos em "Folio": 00412 continua 00412, salvo como texto.
- 15/02/2024 prova que as datas em "Fecha" começam pelo dia, então 03/02/2024 é lido como 2024‑02‑03.
- Os números em "Importe" usam vírgula decimal: 1.234,50 é lido como 1234.50.
- N/A em "Importe" lidos como vazios (1 de 5 valores).
- "Pagado" contém palavras de sim e não (sí, no), salvas como booleano.
Seu arquivo é convertido neste computador e nunca é enviado.
Outros exemplos:
Um arquivo CSV, seis bancos de dados
O exemplo acima, ventas_2024.csv, e o tipo que cada uma das colunas recebe em cada banco de dados.
| No arquivo | Primeiro valor | PostgreSQL | MySQL | MariaDB | SQLite | SQL Server | Oracle |
|---|---|---|---|---|---|---|---|
| Folio | 00412 | text | varchar(8) | varchar(8) | TEXT | nvarchar(8) | VARCHAR2(8 CHAR) |
| Cliente | Peña Muñoz | text | varchar(16) | varchar(16) | TEXT | nvarchar(16) | VARCHAR2(16 CHAR) |
| Ciudad | Mérida | text | varchar(16) | varchar(16) | TEXT | nvarchar(16) | VARCHAR2(16 CHAR) |
| Fecha | 15/02/2024 | date | date | date | DATE | date | DATE |
| Importe | 1.234,50 | numeric(6,2) | decimal(6,2) | decimal(6,2) | NUMERIC(6,2) | decimal(6,2) | NUMBER(6,2) |
| Pagado | sí | boolean | tinyint(1) | tinyint(1) | BOOLEAN | bit | NUMBER(1) |
Carregue o script no seu banco de dados
O download é um arquivo .sql simples. Cada banco de dados o executa com suas próprias ferramentas.
PostgreSQL
psql -v ON_ERROR_STOP=1 -d mydb -f ventas_2024.postgresql.sqlON_ERROR_STOP faz o psql parar no primeiro erro. O script roda em uma única transação, então uma carga que falha deixa o banco de dados como estava.
MySQL
mysql --default-character-set=utf8mb4 mydb < ventas_2024.mysql.sqlO próprio script define utf8mb4; a flag faz o cliente enviá-lo do mesmo jeito, então os acentos chegam intactos.
MariaDB
mariadb --default-character-set=utf8mb4 mydb < ventas_2024.mariadb.sqlO próprio script define utf8mb4; a flag faz o cliente enviá-lo do mesmo jeito, então os acentos chegam intactos.
SQLite
sqlite3 ventas_2024.db < ventas_2024.sqlite.sqlO arquivo do banco de dados é criado se não existir. O conversor também baixa um banco .sqlite pronto, sem nenhum comando.
SQL Server
sqlcmd -S localhost -d mydb -f 65001 -i ventas_2024.sql_server.sql-f 65001 lê o arquivo como UTF-8, então os acentos e o ñ chegam como foram escritos.
Oracle
sqlplus user@//localhost/mydb @ventas_2024.oracle.sqlO script desativa as variáveis de substituição (SET DEFINE OFF), então um e comercial nos seus dados continua sendo um e comercial.
A linha de comando carrega arquivos direto em um banco SQLite de graça. Com o IntoSQL Pro, ela e o app para desktop também carregam no PostgreSQL, MySQL e MariaDB. Para SQL Server e Oracle, execute o script.
O que saber sobre arquivos CSV e cada banco de dados
O que o IntoSQL lê em arquivos CSV
- A codificação é detectada, incluindo Windows-1252 e UTF-16, então acentos e ç chegam intactos.
- O separador é detectado: vírgula, ponto e vírgula, tabulação ou barra vertical. Com ponto e vírgula, vírgulas decimais como 1.234,50 são lidas como números.
- Valores entre aspas podem conter separadores e quebras de linha.
O que saber sobre cada banco de dados
- Escolha o banco de dados depois de abrir o arquivo: cada um recebe os tipos que suporta.
Como cada tipo de valor é armazenado em cada banco de dados
| Valor | PostgreSQL | MySQL | MariaDB | SQLite | SQL Server | Oracle |
|---|---|---|---|---|---|---|
| Sim e não | boolean | tinyint(1) | tinyint(1) | BOOLEAN | bit | NUMBER(1) |
| Números inteiros | integer | int | int | INTEGER | int | NUMBER(10) |
| Números inteiros grandes | bigint | bigint | bigint | INTEGER | bigint | NUMBER(19) |
| Decimais | numeric(p,s) | decimal(p,s)double | decimal(p,s)double | NUMERIC(p,s)TEXT | decimal(p,s) | NUMBER(p,s) |
| Números de ponto flutuante | double precision | double | double | REAL | float | BINARY_DOUBLE |
| Datas | date | date | date | DATE | date | DATE |
| Horários | time | time(6)time | time(6)time | TIME | time | INTERVAL DAY(0) TO SECOND |
| Datas com hora | timestamp | datetime(6)datetime | datetime(6)datetime | DATETIME | datetime2 | TIMESTAMP |
| Datas com hora e fuso | timestamptz | datetime(6)datetime | datetime(6)datetime | DATETIME | datetimeoffset | TIMESTAMP WITH TIME ZONE |
| Texto | text | varchar(n)textmediumtextlongtext | varchar(n)textmediumtextlongtext | TEXT | nvarchar(n)nvarchar(max) | VARCHAR2(n CHAR)CLOB |
Perguntas sobre CSV para SQL
Não encontrou a resposta? Escreva para nós pela página de contato e uma pessoa responde. Página de contato
Como converto CSV para SQL?
Solte seu arquivo no conversor no topo desta página e escolha seu banco de dados: PostgreSQL, MySQL, MariaDB, SQLite, SQL Server ou Oracle. Cada um recebe os tipos que suporta. Baixe o script e execute-o no seu banco de dados.
E se meu CSV usar ponto e vírgula ou tabulação?
O separador é detectado: vírgula, ponto e vírgula, tabulação ou barra vertical. Você também pode defini-lo em Mais opções. Com ponto e vírgula, vírgulas decimais como 1.234,50 são lidas como números.
Quais tipos ele usa em cada banco de dados?
Cada banco recebe os seus: valores sim e não são boolean no PostgreSQL, tinyint(1) no MySQL e no MariaDB, bit no SQL Server e NUMBER(1) no Oracle. A tabela desta página lista cada tipo de valor.
Ele mantém os zeros à esquerda?
Sim. Um código como 00412 continua como texto em todos os bancos, escrito como '00412', então nenhum zero se perde.
Ele carrega os dados sem um script?
Sim. A linha de comando carrega no SQLite de graça, e com o IntoSQL Pro o app para desktop e a linha de comando carregam no PostgreSQL, MySQL e MariaDB. Para SQL Server e Oracle, execute o script.
Qual o tamanho máximo do arquivo CSV?
O navegador lê o CSV à medida que ele chega, então arquivos de vários gigabytes funcionam. Em um notebook com Apple M4, a linha de comando converte um CSV de 174 MB com um milhão de linhas em menos de um segundo.