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