Foros del Web » Programando para Internet » PHP »

PHP OO Insert Multiple Doctrine

Estas en el tema de Insert Multiple Doctrine en el foro de PHP en Foros del Web. un saludo compañeros, es que tengo un problema, estoy insertando de forma masiva unos datos a una tabla, pero se me está demorando mucho tiempo ...
  #1 (permalink)  
Antiguo 25/07/2014, 16:49
Avatar de miguec04  
Fecha de Ingreso: agosto-2008
Ubicación: Cimitarra, Santander
Mensajes: 378
Antigüedad: 11 años, 3 meses
Puntos: 15
Busqueda Insert Multiple Doctrine

un saludo compañeros, es que tengo un problema, estoy insertando de forma masiva unos datos a una tabla, pero se me está demorando mucho tiempo dependiendo de la cantidad de insert que se haga la libreria Doctrine los hace uno a uno de la siguiente forma

Insert into tabla values (val1,val2,val3);
Insert into tabla values (val1,val2,val3);
Insert into tabla values (val1,val2,val3);

pero para optimizar un poco me gustaria hacer un insert multiple de la siguiente forma

Insert into tabla values (val1,val2,val3), (val1,val2,val3), (val1,val2,val3);

me veo en la obligacion de hacer el insert con las entitys de Doctrine de la siguiente forma

$entity = new nombreEntity();
$entity->setVal1('val1');
$entity->setVal2('val2');
$em->persist($entity);

por lo tanto la libreria hace el insert uno a uno, me gustaria saber si hay alguna forma de que la libreria haga un insert multiple usando estas entidades ya he buscado en internet por todos lados, pero no he encontrado, recuerdo que uso Doctrine 2.

Muchas gracias amigos mios. les debo muchas
__________________
Desoftc Technology - Miguel Carmona
Creaciones Inteligentes - Cimitarra Colombia
[email protected]
http://www.desoftc.com.co
  #2 (permalink)  
Antiguo 25/07/2014, 17:23
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 9 años, 7 meses
Puntos: 461
Respuesta: Insert Multiple Doctrine

verifica si te sirve esto http://doctrine-orm.readthedocs.org/...l#bulk-inserts
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #3 (permalink)  
Antiguo 25/07/2014, 17:54
Avatar de miguec04  
Fecha de Ingreso: agosto-2008
Ubicación: Cimitarra, Santander
Mensajes: 378
Antigüedad: 11 años, 3 meses
Puntos: 15
Respuesta: Insert Multiple Doctrine

No compañero, si se hace de esa forma el flush osea cuando ejecuta los insert lo hace cada 20 o cada x cantidad que uno quiera, pero no me agrupa los insert de la forma que yo quiero.
__________________
Desoftc Technology - Miguel Carmona
Creaciones Inteligentes - Cimitarra Colombia
[email protected]
http://www.desoftc.com.co
  #4 (permalink)  
Antiguo 25/07/2014, 19:38
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 9 años, 7 meses
Puntos: 461
Respuesta: Insert Multiple Doctrine

es que doctrine como lo indica el mismo proyecto
Cita:
TIP Disclaimer: In general, an ORM is surely not the best tool for the job for mass data movements, however, it can be a convenient alternative if the performance is sufficient. Every RDBMS has its own highly efficient commands for such operations. For maximum efficiency you should consult the manual of your RDBMS.
fuente
http://www.doctrine-project.org/2009...rocessing.html

el ejemplo que te coloque es el mismo que brindan para mass insert, aunque lo más sano para ese tipo de insert masivos es que prepares
scripts más ligeros a nivel de batch, ya que imagino que es algo que no vas a hacer normalmente en la app.

Edit en teoría y lo que quería que vieras con el ejemplo de la misma documentación, es que no hay manera de armar el query como lo indicas tu, lo más cercano es que vayas haciendo el flush cada cantidad de registros para no sobrecargar el consumo de registros como bien lo indican en el link que te dejo arriba, sin embargo como bien lo indican ellos mismos lo mejor para este tipo de casos no es usar un ORM sino realizar un script para el caso específico, que si lo indicas tal vez se te pueda orientar. Saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way

Última edición por carlos_belisario; 25/07/2014 a las 19:46
  #5 (permalink)  
Antiguo 26/07/2014, 15:00
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 6 años, 5 meses
Puntos: 379
Respuesta: Insert Multiple Doctrine

Cita:
en teoría y lo que quería que vieras con el ejemplo de la misma documentación, es que no hay manera de armar el query como lo indicas tu, lo más cercano es que vayas haciendo el flush cada cantidad de registros para no sobrecargar el consumo de registros como bien lo indican en el link que te dejo arriba, sin embargo como bien lo indican ellos mismos lo mejor para este tipo de casos no es usar un ORM sino realizar un script para el caso específico, que si lo indicas tal vez se te pueda orientar.
Tambien puedes usar transacciones como recomiendan en esta liga: http://www.solidwebcode.com/web-deve...ries-doctrine/
revisa el punto 3
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.

Etiquetas: doctrine2, insert
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 15:03.