Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: AlbertoBSD en 15 Diciembre 2008, 17:39 pm



Título: MySQL Importacion de Archivos tipo CSV (Solucionado)
Publicado por: AlbertoBSD en 15 Diciembre 2008, 17:39 pm
Bien, tengo unos 100 Archivos Importados de Acces en formato tipo csv, ya saben Separados por coma, Cadenas entre comillas,registros terminan con \r y la primera linea es el nombre de los campos. en fin el punto es que son muchos y lo he importado a MySQL con la siguiente Sentencia

Código
  1. LOAD DATA INFILE '/mysql/ArchivoExportadoDeAcces.txt' INTO TABLE 1Sucursales FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\r' IGNORE 1 LINES;

Ahora el problema es que los archivos siempre tienen al ultimo una Linea Vacia, y a la hora de hacer consultas me Aparecen NULL y cosas muy raras pasan cuando realizo multiples consultas o consultas anidadas, left Join etc..

Quiero saber si hay algun parametro mas que pueda Usar en el SQL para que evite esa linea o es necesario que programe un script para quitar esa linea de los archivos ?

Saludos y Gracias por su Atencion.



Título: LOAD DATA INFILE o Programar Script?? MySQL Importacion de Archivos tipo CSV
Publicado por: AlbertoBSD en 15 Diciembre 2008, 22:25 pm
Bueno despues de seguir Buscando una solucion, ya la he encontrado :D Y Resulto ser una combinacion de ambos
Shellscript con SQL

Bien una forma de quitar rapidamente los \r del archivo txt del Access es la siguiente:

Código
  1. tr -d \\r < ArchivoExportadoDeAcces.txt > ArchivoExportadoDeAcces.txt1

Lo anterior quita el \r que me generaba algunos errores y ademas quita la ultima Linea en blanco :D

Ahora solo modificamos la sentencia SQL por esto:

Código
  1. LOAD DATA INFILE '/mysql/ArchivoExportadoDeAcces.txt1' INTO TABLE 1Sucursales FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 LINES;

Note que solo cambiamos el \r por \n y tambien cambiamos el archivo de entrada

Espero y a alguien le sirva

Saludos.