Hola a todos!
Tengo un fichero zip en el que hay una serie de ficheros .txt. La idea es que el programa descomprime el zip, saca los ficheros a un directorio y los va recorriendo uno a uno. Cada uno de estos ficheros de texto hay que leerlos línea a línea e insertar su contenido en una base de datos postgres.
Los ficheros son así:
A,B,C,D,E,F
G,H,I,J,K,L
M,N,Ñ,O,P,Q
Hago un split por comas, y cada elemento lo meto en la tabla. El problema es que para el último elemento mete también \n, es decir, quedaría F\n. Este salto, si entras a visualizar la tabla en postgres, no se ve, pero al intentar hacer un innerjoin, no funciona por el salto de línea. La duda que tengo es que no sé si estoy haciendo mal la lectura del fichero o la inserción. ¿Hay alguna manera de quitar esos saltos de línea?
Este es el código que ejecuto:
Código PHP:
//leer cada fichero del directorio
while ($elemento = readdir($dir)){
$fila=0;
//Recorrer ficheros línea a línea. Cada línea se tokeniza por comas con un split. Se inserta cada token en la base de datos correspondiente.
$file=fopen($elemento, "r");
if ($file) {
while (!feof($file)) {
$buffer = fgets($file, 4096);
$split_buffer=split(",",$buffer);
$v1=$split_buffer[0];
$v2=$split_buffer[1];
$v3=$split_buffer[2];
$v4=$split_buffer[3];
$v5=$split_buffer[4];
$v6=$split_buffer[5];
$gbd->insertar($v1,$v2, $v3, $v4, $v5, $v6);
}
}
fclose($file);
}
Utilizo la librería adodb y ejecuto en Ubuntu.
Muchas gracias y un saludo!