Hoy volvi a necesitar importar un archivo CSV en MySQL.
El tema es que arme una planilla ODS copiando y pegando desde una tabla HTML desde la web.
En la planilla armé las cabeceras con los nombres de los campos como para tener una referencia mas adelante.
Mas o menos asi, tal cual es la tabla HTML, pero en LibreOffice Calc:
------------------------------------------------- NOMBRE_CAMPO_1 + NOMBRE_CAMPO_2 + NOMBRE_CAMPO_3 ------------------------------------------------- registro 1 + blabla + blabla registro 2 + blabla + blabla registro 3 + blabla + blabla ...............
Una vez que termine de pegar los registros, le agregue una columna nueva al principio con el campo ID, y complete con valores 1,2,3 y despues con el autocompletado el resto de los registros para que tengan un índice único:
----------------------------------------------------- ID + NOMBRE_CAMPO_1 + NOMBRE_CAMPO_2 + NOMBRE_CAMPO_3 ----------------------------------------------------- 1 + registro 1 + blabla + blabla 2 + registro 2 + blabla + blabla 3 + registro 3 + blabla + blabla 4 + registro 4 + blabla + blabla ..............
Una vez terminado, y guardado como corresponde, lo guardé como CSV, e indique algunas opciones como para no tener problemas en la importación.
En juego de caracteres: “Unicode UTF-8″
Separador de campo: “|” (pipe, sin las comillas)
Separador de texto: “” (nada, sin comillas)
El resto no lo toque. Listo.
Ahora el turno de crear una tabla en la DB para almacenar mis datos:
#~ mysql -u root -p >mysql use[nombre]; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed >mysql CREATE TABLE [nombre_tabla] ( -> id int(10) unsigned NOT NULL AUTO_INCREMENT, -> [nombre_campo_1] varchar(255) NOT NULL, -> [nombre_campo_2] varchar(255) NOT NULL, -> [nombre_campo_3] varchar(255) NOT NULL, -> PRIMARY KEY (id) ->) TYPE=InnoDB; Query OK, 0 rows affected, 1 warning (0,11 sec) >mysql quit; Bye #~
Ahora una vez copiado o movido a un directorio que me quede cómodo, entro por consola a este directorio, y me logueo en MySQL Server:
#~ cd /home/[cuenta]/[carpeta] #~ mysql -u root -p >mysql use [nombre_base_de_datos]; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed >mysql LOAD DATA LOCAL INFILE 'archivo.csv' INTO TABLE [nombre_tabla] FIELDS TERMINATED BY '|' IGNORE 1 LINES; Query OK, 15976 rows affected (0,26 sec) Records: 15976 Deleted: 0 Skipped: 0 Warnings: 0 >mysql quit; Bye #~
La última parte de la sentencia (IGNORE 1 LINES), es para evitar importar la primera linea del archivo CSV que contiene las cabeceras o nombres de campos de la tabla.
Mas información y opciones, en la doc oficial de MySQL: http://dev.mysql.com/doc/refman/5.1/en/load-data.html
Comentarios recientes