Foros del Web » Programando para Internet » PHP »

Cargar datos en tabla desde txt

Estas en el tema de Cargar datos en tabla desde txt en el foro de PHP en Foros del Web. Lo primero es agradecerles a todos, por su ayuda brindada, y como estamos aqui para aprender, quisiera hacerles otra pregunta. a) Cuando cargo el archivo ...
  #1 (permalink)  
Antiguo 05/11/2008, 14:16
 
Fecha de Ingreso: octubre-2005
Mensajes: 405
Antigüedad: 19 años
Puntos: 1
Cargar datos en tabla desde txt

Lo primero es agradecerles a todos, por su ayuda brindada, y como estamos aqui para aprender, quisiera hacerles otra pregunta.
a) Cuando cargo el archivo TXT mencionado, se va por el mensaje de:
No se ha podido actualizar los datos del archivo EXIPRO.TXT en la tabla EXIPRO.
B) Sera que la definicion de la tabla es incorrecta.
c) Sera porque los datos del txt no corresponden a la estructura de la tabla.

Una duda cuando el valor lleva signo (+ o -) en un valor ¿como debe ir en el archivo txt? 000015- 000015+

Código PHP:
<?
//ubicacion archivo txt
$textfile="/programas/archivos/EXIPRO.TXT";
//Tabla de Datos
$table="EXIPRO";
if(
$textfile != "none")
{
  
$query="LOAD DATA LOCAL INFILE $textfile INTO TABLE $table";
  if (@
mysql_query($query$db))
  {
    echo 
"Loas datos de han actualizado correctamente en la tabla $table";
  }
  else
  {
    echo 
"No se ha podido actualizar los datos del archivo $textfile en la tabla $table";
  }
}
else
{
  echo 
"No se actualizaron los datos, posiblemente el tamaño del archivo es mayor o igual a 2 MB";
}
?>
si la deficion de la tabla EXIPRO es:
-------------------------------------
create table EXIPRO (
RUBRO_P INT(2) NOT NULL,
SUBRUB_P INT(2) NOT NULL,
CODPRO_P VARCHAR(15) NOT NULL,
NOMBRE_P VARCHAR(40) NOT NULL,
TIPPRO_P CHAR(1) DEFAULT NULL,
PREVUS_P DECIMAL(6,2) DEFAULT NULL,
GENNAB_P VARCHAR(4) DEFAULT NULL,
UNIDAD_P VARCHAR(2) DEFAULT NULL,
UNIDADB_P VARCHAR(2) DEFAULT NULL,
UNIUNIB_P DECIMAL(3,1) DEFAULT NULL,
SALDO_P SMALLINT(6) DEFAULT NULL,
PRIMARY KEY(CODPRO_P)) TYPE=MyISAM;

EXIPRO.TXT
----------
92;20;0;Flete y Embalaje;N;00000000; ;UN;UN;0010;000705+;
27;14;0-0;ABRAZADERA 07-11mm.;M;00000000; ;CA;UN;1000;000015-;
27;14;0-1;ABRAZADERA 10-15mm.;M;00000000; ;CA;UN;0500;000151+;
99;11;0002-R1483A;CORREA ALT.KANGOO DIESEL;D;00000000; ;UN;UN;0010;000000+;
35;03;09.1801;GUANTERA "ADAPTABLE"SUP.DER.TABLER.60-75;D;00000000; ;UN;UN;0010;000000+;
  #2 (permalink)  
Antiguo 06/11/2008, 10:06
 
Fecha de Ingreso: octubre-2005
Mensajes: 405
Antigüedad: 19 años
Puntos: 1
Cargar datos a tabla MYSQL desde archivo TXT

Para los conocedores del tema, necesito su ayuda...
Cita:
Iniciado por [email protected] Ver Mensaje
Lo primero es agradecerles a todos, por su ayuda brindada, y como estamos aqui para aprender, quisiera hacerles otra pregunta.
a) Cuando cargo el archivo TXT mencionado, se va por el mensaje de:
No se ha podido actualizar los datos del archivo EXIPRO.TXT en la tabla EXIPRO.
B) Sera que la definicion de la tabla es incorrecta.
c) Sera porque los datos del txt no corresponden a la estructura de la tabla.

Una duda cuando el valor lleva signo (+ o -) en un valor ¿como debe ir en el archivo txt? 000015- 000015+

Código PHP:
<?
//ubicacion archivo txt
$textfile="/programas/archivos/EXIPRO.TXT";
//Tabla de Datos
$table="EXIPRO";
if(
$textfile != "none")
{
  
$query="LOAD DATA LOCAL INFILE $textfile INTO TABLE $table";
  if (@
mysql_query($query$db))
  {
    echo 
"Loas datos de han actualizado correctamente en la tabla $table";
  }
  else
  {
    echo 
"No se ha podido actualizar los datos del archivo $textfile en la tabla $table";
  }
}
else
{
  echo 
"No se actualizaron los datos, posiblemente el tamaño del archivo es mayor o igual a 2 MB";
}
?>
si la deficion de la tabla EXIPRO es:
-------------------------------------
create table EXIPRO (
RUBRO_P INT(2) NOT NULL,
SUBRUB_P INT(2) NOT NULL,
CODPRO_P VARCHAR(15) NOT NULL,
NOMBRE_P VARCHAR(40) NOT NULL,
TIPPRO_P CHAR(1) DEFAULT NULL,
PREVUS_P DECIMAL(6,2) DEFAULT NULL,
GENNAB_P VARCHAR(4) DEFAULT NULL,
UNIDAD_P VARCHAR(2) DEFAULT NULL,
UNIDADB_P VARCHAR(2) DEFAULT NULL,
UNIUNIB_P DECIMAL(3,1) DEFAULT NULL,
SALDO_P SMALLINT(6) DEFAULT NULL,
PRIMARY KEY(CODPRO_P)) TYPE=MyISAM;

EXIPRO.TXT
----------
92;20;0;Flete y Embalaje;N;00000000; ;UN;UN;0010;000705+;
27;14;0-0;ABRAZADERA 07-11mm.;M;00000000; ;CA;UN;1000;000015-;
27;14;0-1;ABRAZADERA 10-15mm.;M;00000000; ;CA;UN;0500;000151+;
99;11;0002-R1483A;CORREA ALT.KANGOO DIESEL;D;00000000; ;UN;UN;0010;000000+;
35;03;09.1801;GUANTERA "ADAPTABLE"SUP.DER.TABLER.60-75;D;00000000; ;UN;UN;0010;000000+;
  #3 (permalink)  
Antiguo 06/11/2008, 10:49
Avatar de Genetix  
Fecha de Ingreso: febrero-2002
Ubicación: Lima - Perú
Mensajes: 1.600
Antigüedad: 22 años, 9 meses
Puntos: 45
Respuesta: Cargar datos en tabla desde txt

Hola
Te falta especificar FIELDS y LINES

Si no especifica una cláusula FIELDS, por defecto es como si hubiera escrito esto:

FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\'


Si no especifica una cláusula LINES, por defecto es como si hubiera escrito esto:

LINES TERMINATED BY '\n' STARTING BY ''


En tu caso seria
Código sql:
Ver original
  1. LOAD DATA INFILE 'data.txt' INTO TABLE tbl_name
  2.           FIELDS TERMINATED BY ';' ENCLOSED BY '"'
  3.           LINES TERMINATED BY '\n';

mas info http://dev.mysql.com/doc/refman/5.0/es/load-data.html

Evita poner código de programación
http://www.forosdelweb.com/f21/funci...-datos-413499/
Cita:
Para ser más explicito, por favor NO coloquen código de php, asp u otro similar, ya que eso es programación.
Saludos!
__________________
"El conocimiento nos hace responsables."
twitter: @benjamingb
blog personal: http://codigolinea.com
ZF Manual en español http://manual.zfdes.com
  #4 (permalink)  
Antiguo 06/11/2008, 11:30
 
Fecha de Ingreso: octubre-2005
Mensajes: 405
Antigüedad: 19 años
Puntos: 1
Respuesta: Cargar datos en tabla desde txt

Ya lo habia hecho pero aun se va por el else.
Código PHP:
<?
      
//Delimitador
      
$delimita=';';
      
//Separador de Campo
      
$fincampo='"';
      
//Finalizar lineas
      
$finlinea='\n';
      
//query para cargar txt
      
$query="LOAD DATA LOCAL INFILE '$textfile' INTO TABLE '$table'
              FIELDS
              TERMINATED BY '$delimita'
              ENCLOSED BY '$fincampo'   
              LINES TERMINATED BY '$finlinea'"
;
      
//consulta
      
if (@mysql_query($query,$db))
      {
        print 
"\nLos datos se han actualizado con exito en la tabla $table\n";
      }
      else 
      {
        print 
"\nNo se han podido actualizar los datos del archivo $textfile en la tabla $table\n";
      } 
?>
Cita:
Iniciado por Genetix Ver Mensaje
Hola
Te falta especificar FIELDS y LINES

Si no especifica una cláusula FIELDS, por defecto es como si hubiera escrito esto:

FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\'


Si no especifica una cláusula LINES, por defecto es como si hubiera escrito esto:

LINES TERMINATED BY '\n' STARTING BY ''


En tu caso seria
Código sql:
Ver original
  1. LOAD DATA INFILE 'data.txt' INTO TABLE tbl_name
  2.           FIELDS TERMINATED BY ';' ENCLOSED BY '"'
  3.           LINES TERMINATED BY '\n';

mas info http://dev.mysql.com/doc/refman/5.0/es/load-data.html

Evita poner código de programación
http://www.forosdelweb.com/f21/funci...-datos-413499/


Saludos!
  #5 (permalink)  
Antiguo 06/11/2008, 11:40
Avatar de Genetix  
Fecha de Ingreso: febrero-2002
Ubicación: Lima - Perú
Mensajes: 1.600
Antigüedad: 22 años, 9 meses
Puntos: 45
Respuesta: Cargar datos en tabla desde txt

Pruébate directamente en la consola de Mysql

Este no es foro de programación pero te dire que evita usar @, quita eso y ve el error que te sale.

Saludos!
__________________
"El conocimiento nos hace responsables."
twitter: @benjamingb
blog personal: http://codigolinea.com
ZF Manual en español http://manual.zfdes.com
  #6 (permalink)  
Antiguo 06/11/2008, 13:44
 
Fecha de Ingreso: octubre-2005
Mensajes: 405
Antigüedad: 19 años
Puntos: 1
Respuesta: Cargar datos en tabla desde txt

Gracias por el interes de ayudar, tengo mas que claro que no es programacion PHP, pero no falta quien te pide indicar el codigo por eso lo hago.

En cuanto a que lo pruebe en la consola lo hice con solo 5 registros y funciono.
pero al hacerlo completo me da un error.
este fue el codigo que utilice:
Código PHP:
<?
 
//Como se separan los campos en cada registro                             
 
$delimita="';'";                                                          
 
//Como se separaran las lineas en cada registro             
 
$fincampo="'\t'";                                                         
 
//Como se hacen los saltos a otro registro                               
 
$finlinea="'\n'";                                                         
 
//query para cargar txt                                                   
 
$query="LOAD DATA LOCAL INFILE $textfile REPLACE INTO TABLE $table        
         FIELDS                                                            
         TERMINATED BY $delimita                                           
         OPTIONALLY ENCLOSED BY $fincampo                                  
         LINES TERMINATED BY $finlinea"
;   
?>
No se cargan los datos en la tabla

Cita:
Iniciado por Genetix Ver Mensaje
Pruébate directamente en la consola de Mysql

Este no es foro de programación pero te dire que evita usar @, quita eso y ve el error que te sale.

Saludos!
  #7 (permalink)  
Antiguo 06/11/2008, 16:59
Avatar de Genetix  
Fecha de Ingreso: febrero-2002
Ubicación: Lima - Perú
Mensajes: 1.600
Antigüedad: 22 años, 9 meses
Puntos: 45
Respuesta: Cargar datos en tabla desde txt

Cita:
En cuanto a que lo pruebe en la consola lo hice con solo 5 registros y funciono.
Quiere decir que el problema esta en tu programación.

Estoy viendo que estas haciendo mal algunas cosas dentro de tu programación, este no es el foro adecuado, talvez si te pasa al foro de PHP te daría mejores alcances.

Saludos!
__________________
"El conocimiento nos hace responsables."
twitter: @benjamingb
blog personal: http://codigolinea.com
ZF Manual en español http://manual.zfdes.com
  #8 (permalink)  
Antiguo 07/11/2008, 06:31
 
Fecha de Ingreso: octubre-2005
Mensajes: 405
Antigüedad: 19 años
Puntos: 1
Respuesta: Cargar datos en tabla desde txt

Espero encontrar aqui respuesta a mi inquietud, desde ya se les agradece cualquiern colaboracion.

Cita:
Iniciado por Genetix Ver Mensaje
Quiere decir que el problema esta en tu programación.

Estoy viendo que estas haciendo mal algunas cosas dentro de tu programación, este no es el foro adecuado, talvez si te pasa al foro de PHP te daría mejores alcances.

Saludos!
  #9 (permalink)  
Antiguo 07/11/2008, 09:17
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Cargar datos en tabla desde txt

Como te indico Genetix, tu query esta mal, imprimela haciendo un echo $query y podrás ver que los valores no son los correctos.

Saludos.
  #10 (permalink)  
Antiguo 07/11/2008, 10:47
 
Fecha de Ingreso: octubre-2005
Mensajes: 405
Antigüedad: 19 años
Puntos: 1
Respuesta: Cargar datos en tabla desde txt

He realizado lo que me indicaron.
Código PHP:
<?
$query
="LOAD DATA LOCAL INFILE `$textfile` INTO TABLE $table  
        FIELDS TERMINATED BY `$delimita`                      
        ENCLOSED BY `$fincampo`                               
        LINES TERMINATED BY `$finlinea`"
;                     
mysql_query($query,$db) or die(mysql_error());
?>
Y el resultado es el siguiente:

You have an error in your SQL syntax; check the manual that corresponds to your
MySQL server version for the right syntax to use near '/indra/dat/PRODUC.TXT` IN
TO TABLE EXIPRO
FIELDS TERMINATED BY `;`
' at line 1

Es lo que logro destinguir y la verdad me desconcierta, alguna idea?

Desde ya Gracias

Cita:
Iniciado por GatorV Ver Mensaje
Como te indico Genetix, tu query esta mal, imprimela haciendo un echo $query y podrás ver que los valores no son los correctos.

Saludos.
  #11 (permalink)  
Antiguo 07/11/2008, 10:53
 
Fecha de Ingreso: octubre-2005
Mensajes: 405
Antigüedad: 19 años
Puntos: 1
Respuesta: Cargar datos en tabla desde txt

Realice una pequeña modificacion con las cremillas y el mesaje de error es otro:
Código PHP:
<?
$query
="LOAD DATA LOCAL INFILE '$textfile' INTO TABLE $table  
        FIELDS TERMINATED BY '$delimita'                      
        ENCLOSED BY '$fincampo'                               
        LINES TERMINATED BY '$finlinea'"
;                     
mysql_query($query,$db) or die(mysql_error());
?>
Ahora e mensaje es:
The used command is not allowed with this MySQL version
Y como yo soy un gran conocerdor del lenguaje desconozco lo que me quiere indicar este.

Cita:
Iniciado por [email protected] Ver Mensaje
He realizado lo que me indicaron.
Código PHP:
<?
$query
="LOAD DATA LOCAL INFILE `$textfile` INTO TABLE $table  
        FIELDS TERMINATED BY `$delimita`                      
        ENCLOSED BY `$fincampo`                               
        LINES TERMINATED BY `$finlinea`"
;                     
mysql_query($query,$db) or die(mysql_error());
?>
Y el resultado es el siguiente:

You have an error in your SQL syntax; check the manual that corresponds to your
MySQL server version for the right syntax to use near '/indra/dat/PRODUC.TXT` IN
TO TABLE EXIPRO
FIELDS TERMINATED BY `;`
' at line 1

Es lo que logro destinguir y la verdad me desconcierta, alguna idea?

Desde ya Gracias
  #12 (permalink)  
Antiguo 07/11/2008, 12:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Cargar datos en tabla desde txt

Te dice que el comando no es posible usarlo en la versión de MySQL, esto puede ser por varias razones, 1) permisos, 2) por que no soporta LOAD DATA tu versión de MySQL.

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:29.