Neste post, vou compartilhar a maneira mais rápida de importar um arquivo CSV grande para o MySql usando o MySql CLI. Você pode ter baixado o feed de produtos ou qualquer outro relatório de outras fontes, mas o tamanho do arquivo que você baixou é de aproximadamente 2 GB com 5 milhões de linhas. E procurando a maneira mais rápida de importar esse enorme arquivo CSV para seu banco de dados MySql, então este post é para você.
Importar um arquivo .csv grande de aproximadamente 2 GB do PhpMyAdmin é muito tarefa tediosa, e você pode não conseguir importar o arquivo corretamente. Você pode fasear o tempo limite de conexão, erro de tempo limite de execução. Importar o arquivo usando a porta http levará muito tempo. Portanto, sugiro que você use o MySql CLI para importar esse tipo de arquivo enorme para seu banco de dados MySql. Como você sabe, a linha de comando é a maneira mais rápida de fazer a tarefa. Aqui vou compartilhar algumas consultas do MySql que ajudam você a importar o arquivo CSV para o seu banco de dados MySql em minutos.
Leia também: Como dividir um arquivo csv grande em arquivos menores
Faça login no banco de dados MySQL usando CLI
mysql -u username -p dbname --local-infile |
Depois de executar o seguinte comando, ele solicitará a senha do banco de dados, digite a senha e pressione enter e você fará login na interface de comando do MySql, aqui você pode executar qualquer consulta, cada consulta é executada rapidamente aqui, tente uma vez que você realmente economize seu tempo na execução de grandes consultas.

Consulta MySQL para importar linha de comando do arquivo CSV
LOAD DATA LOCAL INFILE 'csv_file_path/filename.csv' INTO TABLE table_name FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'; |
Se você tiver um arquivo CSV separado por tabulação, poderá usar a seguinte consulta, basta substituir FIELDS TERMINATED BY ',' de CAMPOS TERMINADOS POR '\t'
LOAD DATA LOCAL INFILE 'csv_file_path/filename.csv' INTO TABLE table_name FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n'; |
Se você deseja que apenas uma coluna específica seja inserida do arquivo CSV no banco de dados MySql, use a seguinte consulta para ignorar colunas CSV indesejadas.
LOAD DATA LOCAL INFILE 'csv_file_path/filename.csv' INTO TABLE table_name FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (@col1,@col2,@col3,@col4,@col5,@col6) set [email protected],[email protected], [email protected]; |
Onde col1,2,3,4,5,6 são a coluna do arquivo CSV @ irá ignorar todas as colunas, exceto as colunas do banco de dados que você definiu como [email protected],[email protected], [email protected]