Importar base de datos desde xml

Estoy utilizando IBM DB2 v9.1 y desea exportar toda la base de datos a un archivo xml e importarlo nuevamente cuando sea necesario. Hay 9 tablas en mi base de datos.

Estoy utilizando java and hibernate. Lo que he hecho hasta ahora es: obtener todos los datos a través de hibernación y llenar objetos POJO, luego exportar los objetos a un archivo xml. Ahora, para importar, primero necesito eliminar todas las bases de datos existentes e importar los datos del archivo xml a la base de datos.

El problema es con las claves primarias (id). Una vez que se elimina la identificación de DB2, los datos no se pueden guardar con esa identificación y se le asignará una nueva identificación. Esto perturba la relación de clave externa. ¿Cuál es la mejor solución posible para ello?

preguntado el 16 de abril de 13 a las 08:04

4 Respuestas

Si desea exportar/importar datos con fines de prueba, puede considerar DbUnit http://www.dbunit.org/index.html

Respondido 16 Abr '13, 09:04

Quizás el Declaración MERGE puede venir a su rescate. Si ya hay una fila con la identificación coincidente, le permitirá actualizar la fila. Si no hay una fila con una identificación coincidente, le permitirá insertarla.

Entonces, la pregunta podría ser, ¿realmente necesita eliminar las filas de DB2 cuando crea los archivos XML?

Respondido 16 Abr '13, 23:04

Lo intenté pero fusionar no me dio resultados. Después de la eliminación, guardo esa entidad con merge() pero se guarda con una nueva ID, aunque la ID se configuró en la anterior antes de llamar a merge(). - Muhammad Imran Tarik

Parece que puede tener campos de identidad definidos con GENERAR SIEMPRE en lugar de GENERAR POR DEFECTO. ¿Puede usted o su DBA modificar esas definiciones? - warrent

¿Qué quieres decir con toda la base de datos? ¿toda la información? o incluso el DDL?

Creo que está exportando todos los datos y deja las tablas creadas para que se rellenen con los datos exportados.

El problema son las restricciones y los valores generados. Hay un buen artículo sobre valores generados: http://www.ibm.com/developerworks/data/library/techarticle/0205pilaka/0205pilaka2.html

Para las restricciones referenciales, lo mejor es descartarlas/desactivarlas antes de importar, luego importar datos y finalmente volver a crear/activar restricciones referenciales.

Aquí, un buen procedimiento almacenado para habilitar/deshabilitar restricciones: http://www.dzone.com/snippets/db2-enabledisable-constraints

Respondido 17 Abr '13, 14:04

Quitar la mesa podría funcionar, pero tengo que trabajar sin dejar caer la mesa. - Muhammad Imran Tarik

No dije eliminar tablas, quise eliminar restricciones o desactivarlas. - AngocA

Después de importar el archivo, todas las relaciones se mapearán para verificar su interrelación. Se crearán nuevos objetos después de la relación de mapeo y se guardarán en la base de datos con ID nuevos, ya que DB2 no guardará datos en un ID antiguo eliminado y los guardará en un ID nuevo.

Respondido 22 Abr '13, 07:04

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.