Pular para o conteúdo

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.

Seu arquivo
csvventas_2024.csvArquivo de exemplo, 357 B
Seu banco de dados

5 linhas convertidas, 8 correções, nenhuma rejeitada

Mostrar
As primeiras linhas de ventas_2024.csv, com cada correção marcada
Linha
500412Peña MuñozMérida15/02/20241.234,50sí
600413José Ángel RuizLeón03/02/202499,90no
700414Zoë OrtízQuerétaro29/02/2024N/Así
800415Ñuño CastañedaOaxaca28/02/20247,25no
900416Iñaki OlaizolaMazatlán11/03/2024980,75sí
-- 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

  1. O arquivo foi escrito em windows‑1252; ele foi convertido para UTF-8.
  2. O cabeçalho está na linha 4; as linhas acima dele ficaram de fora.
  3. A linha 10 ("TOTAL") é um total, então ficou de fora.
  4. Zeros à esquerda mantidos em "Folio": 00412 continua 00412, salvo como texto.
  5. 15/02/2024 prova que as datas em "Fecha" começam pelo dia, então 03/02/2024 é lido como 2024‑02‑03.
  6. Os números em "Importe" usam vírgula decimal: 1.234,50 é lido como 1234.50.
  7. N/A em "Importe" lidos como vazios (1 de 5 valores).
  8. "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 arquivoPrimeiro valorPostgreSQLMySQLMariaDBSQLiteSQL ServerOracle
Folio00412textvarchar(8)varchar(8)TEXTnvarchar(8)VARCHAR2(8 CHAR)
ClientePeña Muñoztextvarchar(16)varchar(16)TEXTnvarchar(16)VARCHAR2(16 CHAR)
CiudadMéridatextvarchar(16)varchar(16)TEXTnvarchar(16)VARCHAR2(16 CHAR)
Fecha15/02/2024datedatedateDATEdateDATE
Importe1.234,50numeric(6,2)decimal(6,2)decimal(6,2)NUMERIC(6,2)decimal(6,2)NUMBER(6,2)
Pagadosíbooleantinyint(1)tinyint(1)BOOLEANbitNUMBER(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.sql

    ON_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.sql

    O 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.sql

    O 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.sql

    O 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.sql

    O 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

ValorPostgreSQLMySQLMariaDBSQLiteSQL ServerOracle
Sim e nãobooleantinyint(1)tinyint(1)BOOLEANbitNUMBER(1)
Números inteirosintegerintintINTEGERintNUMBER(10)
Números inteiros grandesbigintbigintbigintINTEGERbigintNUMBER(19)
Decimaisnumeric(p,s)decimal(p,s)doubledecimal(p,s)doubleNUMERIC(p,s)TEXTdecimal(p,s)NUMBER(p,s)
Números de ponto flutuantedouble precisiondoubledoubleREALfloatBINARY_DOUBLE
DatasdatedatedateDATEdateDATE
Horáriostimetime(6)timetime(6)timeTIMEtimeINTERVAL DAY(0) TO SECOND
Datas com horatimestampdatetime(6)datetimedatetime(6)datetimeDATETIMEdatetime2TIMESTAMP
Datas com hora e fusotimestamptzdatetime(6)datetimedatetime(6)datetimeDATETIMEdatetimeoffsetTIMESTAMP WITH TIME ZONE
Textotextvarchar(n)textmediumtextlongtextvarchar(n)textmediumtextlongtextTEXTnvarchar(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.