Después de haber intentado cargar la información de geonames (distribuida en ficheros de texto delimitados... tipo CSV) en la base de datos de triptance.com al estilo programador (leer cada línea del fichero de datos, mapearlo e insertarlo) y ver que tardaba casi dos horas cada prueba, me he pasado al estilo DBA: usar las herramientas de Mysql.
Este artículo tiene la información necesaria (en inglés).
En mi caso, los registros están separados por tabuladores en lugar de comas (y, obviamente, los campos de mi tabla son distintos).
Lo primero es entrar en el cliente de línea de comandos de mysql:
mysql -u root triptance_dev
Lo siguiente, ejecutar el comando de carga:
LOAD DATA LOCAL INFILE 'tmp/allCountries.txt'
INTO TABLE geonames_raw
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
(geoname_id, name, ascii_name, alternate_names, lat, lng, feature_class, feature_code, country_code, cc2, admin1_code, admin2_code, admin3_code, admin4_code, population, elevation, gtopo30, timezone_id, modification_date)
Y, para terminar, disfrutar del resultado:
Query OK, 6914645 rows affected, 65535 warnings (4 min 12.55 sec)
... hasta sobra tiempo para escribir un post sobre el tema.
Escribir un comentario