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

[SOLUCIONADO] DUDA: copiar datos de una tabla a otras 2 con un procedure

Estas en el tema de DUDA: copiar datos de una tabla a otras 2 con un procedure en el foro de Mysql en Foros del Web. Hola a todos! como va? bueno, lo primero de todo que quiesiera decir, es que aunque lelvo tiempo utilizando mysql (desde php) con esto de ...
  #1 (permalink)  
Antiguo 25/01/2016, 17:03
 
Fecha de Ingreso: julio-2008
Mensajes: 543
Antigüedad: 15 años, 9 meses
Puntos: 56
DUDA: copiar datos de una tabla a otras 2 con un procedure

Hola a todos! como va?

bueno, lo primero de todo que quiesiera decir, es que aunque lelvo tiempo utilizando mysql (desde php) con esto de los procudures estoy mas verde que la puñeta. Vamos que los acabo de descubrir y despues de unos cuantos "Oh!" y "Ah!" he llegado al putno de.... y como ###### los utilizo?

Os cuento mi duda:
El caso es que estoy tratando de montarme un importador para Prestashop, del csv que me da mi proveedor a la base de datos. Alguno dirá que por qué no utilizo el importador que viene de serie, y la respuesta es que porque entonces tengo que descargar y formatear el csv cada vez que quiera actualizar datos, y lo que quiero es automatizarlo cogiendolo directamente en remoto. De momento tengo un script que me importa todos los datos del csv (unos 15000 articulos) a una tabla que le he creado para ello en la BD. Y ahora necesito traspasar esos datos a las tablas "correctas". Pro ejemplo hay una tabla conde aparece el nombre y el precio del articulo, y otra donde se almacena la descripcion. Ah!, esta alojado en un servidor compartido. Lo digo porque sé que en dedicados se pueden por ejemplo ejecutar exes y tal... pero en compartidos no (y de momento la tienda no da como para pasarla a un dedidcado xD )

Y aqui viene mi problema. Que no se ni por donde empezar. A ver, se que se puede (lo he visto en funcionamiento en otros proyectos) y que funciona muy bien, pero estoy bastante perdida... he leido que la "idea" es empaquetar comandos de mysql para que se ejecuten, asi que he probado con algo como (los nombres de las tablas no son los de prestashop porque son tablas que he hecho para test):

Código MySQL:
Ver original
  1. DELIMITER //
  2. CREATE PROCEDURE testUptade()
  3. BEGIN      
  4.  
  5.        INSERT INTO productos (product_id, nombre, stock, precio)
  6.        SELECT codigo, nombre, stock, precio  
  7.        FROM tabla_csv;
  8.        
  9.        INSERT INTO productos_descriptions (product_id, desc_espa, custom1, custom2)
  10.        SELECT codigo, descripcion_castellano, talla, marca  
  11.        FROM tabla_csv;
  12.        
  13.        
  14. END//
  15. DELIMITER ;


[/CODE]

Pero la segunda query me da error #1062 (duplicate entry '0' for key 1) . Lei en stackoverflow algo sobre que el problema era por los foreing keys (y me quedé miu miu) y las soluciones eran o que el primary key fuera auto-increment o quitar la primary key. Pero el problema es que la que es primary key es la de descripcion (no se por qué, yo no la hago asi, no se si sera por ser un campo tipo text) y en la tabla original de presta no es auto-increment... lo que me lleva a pensar que mi codigo es totalmente equivocado. Bueno, el error, y que en el proyecto que vi esto funcionando hacia un loop, pero no doy con la tecla de cómo se hace un loop.

Puede alguien echarme un cable? no quiero que me deis el codigo, lo que me gustaria es saber como deberia atacar mi problema, y como hacer un loop para que vaya metiendo los valores y que estos tengan correspondencia (las tablas del presta tienen un id de producto que lo da de forma automatica y yo he tratado de meterselo forzado desde el csv, que iamgino que no es lo mejor, claro, pero me pareció la forma mas sencilla de asegurar la correspondencia. Supongo que lo crrecto es meter los datos en una tabla y luego hacer un select del id otorgado para terminad de meter los datos de ese producto en concreto en la otra tabla, pero vaya, como digo se me ocurrió hacerlo asi para ahorrar).

Gracias a todos por vuestro tiempo :)


PD se me olvidaba! las tablas de prestashop son todas innodb
__________________
Un saludo! :-)
Quiero ser el primero

Última edición por gnzsoloyo; 25/01/2016 a las 18:10
  #2 (permalink)  
Antiguo 25/01/2016, 17:56
 
Fecha de Ingreso: julio-2008
Mensajes: 543
Antigüedad: 15 años, 9 meses
Puntos: 56
Respuesta: DUDA: copiar datos de una tabla a otras 2 con un procedure

nada, que habia creado mal las tablas ARGH! aunque bueno, sigo sin saber manejarme con los procedures (sobre todo el tema de hacer loops para hacer inserts o updates) asi que si alguno sabe de algun sitio donde ver informacion relacionada (y es que todo lo que veo son ejemplo de hacer sumas, ooperaciones con fechas y cosas asi) se lo agradeceré en el alma :)

PD hasta que no he escrito toda esa parrfada de ahi arriba y me he leido a mi misma no he visto donde estaba mi problema xD que vergüenza, siempre me pasa lo mismo...
__________________
Un saludo! :-)
Quiero ser el primero

Etiquetas: campo, procedure, select, 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 20:25.