Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

LOAD DATA INFILE con INSERT en el mismo query

Estas en el tema de LOAD DATA INFILE con INSERT en el mismo query en el foro de Mysql en Foros del Web. Hola amigos míos, el dia de hoy necesito una colaboración sobre un insert dentro de un load data, resulta que tengo un archivo plano y ...
  #1 (permalink)  
Antiguo 25/09/2013, 22:40
 
Fecha de Ingreso: diciembre-2012
Mensajes: 249
Antigüedad: 11 años, 11 meses
Puntos: 2
LOAD DATA INFILE con INSERT en el mismo query

Hola amigos míos,
el dia de hoy necesito una colaboración sobre un insert dentro de un load data,
resulta que tengo un archivo plano y este lo subo a una base de datos, pero solo sube los datos si el numero de campos del archivo es igual al numero de campos de la tabla.

En realidad la tabla tiene 2 campos mas que son foreign keys es decir, la tabla tiene 10 campos y el archivo plano 8 campos separados por ';'
estos 2 campos sobrantes los debo llenar mediante un insert que corresponde al grupo al que pertenecen ese conjunto de datos subidos.

Código MySQL:
Ver original
  1. insert into clientes (IdGrupo1, IdGrupo2) values ('100000','22222');
  2.  
  3. LOAD DATA INFILE 'c:/archivo.txt'
  4. INTO TABLE clientes

Como puedo unificar estas 2 consultas sql? gracias por su ayuda
  #2 (permalink)  
Antiguo 26/09/2013, 01:46
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: LOAD DATA INFILE con INSERT en el mismo query

Creo que la unica solución es crear una tabla "clientesTemp" con todos los campos excepto esos dos.... y hacerlo por partes...

Código MySQL:
Ver original
  1. CREATE TABLE clientesTemp
  2. ...los mismos campos que clientes...
  3. ...sin esos dos campos ....
  4. ... sin relaciones....
  5.  
  6. LOAD DATA INFILE 'c:/archivo.txt'
  7. INTO TABLE clientesTemp
  8.  
  9. INSERT INTO clientes (IdGrupo1, IdGrupo2, ....otros campos....)
  10.         SELECT '100000','22222',....otros campos....
  11.             FROM clientesTemp;
  12. DELETE FROM clientesTemp;
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 26/09/2013 a las 01:54
  #3 (permalink)  
Antiguo 26/09/2013, 07:12
 
Fecha de Ingreso: diciembre-2012
Mensajes: 249
Antigüedad: 11 años, 11 meses
Puntos: 2
Respuesta: LOAD DATA INFILE con INSERT en el mismo query

muchisimas gracias voy a probar
  #4 (permalink)  
Antiguo 26/09/2013, 07:48
 
Fecha de Ingreso: diciembre-2012
Mensajes: 249
Antigüedad: 11 años, 11 meses
Puntos: 2
Respuesta: LOAD DATA INFILE con INSERT en el mismo query

bueno tengo otra pregunta, digamos que el archivo lo tengo dentro de una carpeta del mismo servidor, lo que hago es darle la direccion de la carpeta

Código MySQL:
Ver original
  1. LOAD DATA INFILE '$directorio'
  2. INTO TABLE clientesTemp

pero me bota un error

Código PHP:
Ver original
  1. File 'C:\ProgramData\MySQL\MySQL Server 5.5\Data\Archivos\plano.txt' not found (Errcode: 2)

acaso no se pueden subir archivos desde una carpeta contenida en el mismo servidor? o tengo que guardar el archivo en esa direccion?

C:\ProgramData\MySQL\MySQL Server 5.5\Data\

perdon y gracias
  #5 (permalink)  
Antiguo 26/09/2013, 07:54
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: LOAD DATA INFILE con INSERT en el mismo query

Le estás indicando que lo busque en esa ruta, pero no lo tienes allí.
La pregunta es: ¿Donde está?
SI lo tienes en tu PC, y el host es remoto, debes usar LOAD DATA LOCAL..., sino, el archivo debe estar en el host, pero en ese caso tienes que tomar la ruta de las variables propias de MySQL, y no indicar un disco determinado.
Por default, el directorio local es el /data.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: campo, data, infile, insert, load, query, sql, tabla
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 04:00.