1
resposta

Bom dia

Estou utilizando MySQL Workbench no código abaixo. O que fazer para corrigir.

LOAD DATA LOCAL INFILE 'C:/Users/Administrador/Desktop/fontes/Alunos.csv'
INTO TABLE Alunos
FIELDS TERMINATED BY ';'
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
1 resposta

Oi, Rubens! Como vai?

Vamos resolver isso.
O erro COD 1046 – No database selected acontece quando o MySQL não sabe em qual banco de dados a tabela Alunos está.
Ou seja, o comando LOAD DATA tenta importar o arquivo CSV, mas não há um banco selecionado no momento da execução.

Por que isso acontece
Quando abrimos o MySQL Workbench, ele se conecta ao servidor, mas não seleciona automaticamente nenhum banco de dados.
Assim, ao executar:


LOAD DATA LOCAL INFILE 'C:/Users/Administrador/Desktop/fontes/Alunos.csv'
INTO TABLE Alunos
FIELDS TERMINATED BY ';'
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;

O MySQL tenta achar a tabela Alunos, mas não sabe em qual banco procurar, e, por isso, retorna o erro 1046.

Como resolver
Você tem duas opções simples para corrigir:

1. Selecionar o banco antes do comando
Use o comando USE para definir o banco de dados ativo:


USE SeuBanco;

SET SESSION local_infile = 1;

LOAD DATA LOCAL INFILE 'C:/Users/Administrador/Desktop/fontes/Alunos.csv'
INTO TABLE Alunos
CHARACTER SET utf8mb4
FIELDS TERMINATED BY ';'
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES;

Explicando:

  • USE SeuBanco; seleciona o banco.
  • SET SESSION local_infile = 1; garante que o MySQL aceite arquivos locais.
  • LINES TERMINATED BY '\r\n' é importante no Windows, pois as linhas terminam com caractere de retorno de carro e nova linha (\r\n).

2. Indicar o banco diretamente na tabela
Se preferir, você pode escrever o nome do banco junto com a tabela:


SET SESSION local_infile = 1;

LOAD DATA LOCAL INFILE 'C:/Users/Administrador/Desktop/fontes/Alunos.csv'
INTO TABLE SeuBanco.Alunos
CHARACTER SET utf8mb4
FIELDS TERMINATED BY ';'
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES;

Dicas extras

  • Ativar o LOCAL INFILE no Workbench:
    No menu de conexão → Advanced → adicione:
    OPT_LOCAL_INFILE=1
    Isso permite que o Workbench envie o arquivo CSV do seu computador.

  • Verifique o diretório seguro (caso o LOCAL não funcione):

    
    SHOW VARIABLES LIKE 'secure_file_priv';
    

    Coloque o arquivo dentro da pasta indicada e rode o comando sem LOCAL:

    
    LOAD DATA INFILE 'C:/mysql-files/Alunos.csv'
    INTO TABLE SeuBanco.Alunos
    FIELDS TERMINATED BY ';'
    ENCLOSED BY '"'
    LINES TERMINATED BY '\r\n'
    IGNORE 1 LINES;
    

Sobre duplicidades
Como o curso explica, para evitar registros duplicados, você pode criar uma chave única (por exemplo, CPF) e usar as opções IGNORE ou REPLACE no comando:

  • IGNORE: descarta a linha nova duplicada.
  • REPLACE: substitui a antiga pela nova.

ALTER TABLE Alunos ADD UNIQUE KEY uk_cpf (cpf);

LOAD DATA LOCAL INFILE 'C:/Users/Administrador/Desktop/fontes/Alunos.csv'
IGNORE
INTO TABLE SeuBanco.Alunos
FIELDS TERMINATED BY ';'
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES (cpf, nome, curso);

Espero ter ajudado. Conte com o apoio do Fórum na sua jornada. Fico à disposição.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado