sql >> Base de Datos >  >> RDS >> Mysql

La forma más rápida de importar un archivo CSV grande a MySql usando MySql CLI

En esta publicación, compartiré la forma más rápida de importar un archivo CSV grande a MySql usando MySql CLI. Es posible que haya descargado el feed de productos o cualquier otro informe de otras fuentes, pero el tamaño del archivo que ha descargado es de aproximadamente 2 GB con 5 millones de filas. Y si busca la forma más rápida de importar este enorme archivo CSV a su base de datos MySql, esta publicación es para usted.



Importar un archivo .csv grande de aproximadamente 2 GB desde PhpMyAdmin es muy tarea tediosa, y es posible que no pueda importar el archivo correctamente. Puede pasar el tiempo de espera de conexión, error de tiempo de espera de ejecución. La importación de archivos mediante el puerto http llevará mucho tiempo. Así que le sugiero que use MySql CLI para importar este tipo de archivo enorme a su base de datos MySql. Como sabe, la línea de comandos es la forma más rápida de realizar una tarea. Aquí voy a compartir algunas consultas de MySql que lo ayudarán a importar un archivo CSV a su base de datos MySql en minutos.

Leer también: Cómo dividir un archivo csv grande en archivos más pequeños

Inicie sesión en la base de datos MySql usando CLI

 mysql -u username -p dbname --local-infile

Después de ejecutar el siguiente comando, le pedirá la contraseña de la base de datos, escriba la contraseña y presione Intro e iniciará sesión en su interfaz de comando MySql. Aquí puede ejecutar cualquier consulta, cada consulta se ejecuta muy rápido aquí, intente una vez que realmente podría ahorrar su tiempo en la ejecución de grandes consultas.



Consulta MySql para importar la línea de comando del archivo CSV

LOAD DATA LOCAL INFILE 'csv_file_path/filename.csv'  INTO TABLE table_name FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';

Si tiene un archivo CSV separado por tabulaciones, puede usar la siguiente consulta, simplemente reemplace 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';

Si solo desea insertar una columna específica desde el archivo CSV a la base de datos MySql, utilice la siguiente consulta para ignorar las columnas CSV no deseadas.

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];

Donde col1,2,3,4,5,6 son la columna del archivo CSV @ ignorará todas las columnas, excepto las columnas de la base de datos que haya configurado como [email protected],[email protected], [email protected]