2010-12-15 17 views
5

Tengo una base de datos que he copiado. Ahora estoy tratando de eliminar todo el contenido de la base de datos original y restaurarlo a su estado vacío. dado que es un DB relacional, tiene restricciones clave. ¿Hay alguna herramienta que pueda usar para esto?Vaciar un esquema de base de datos relacional

+0

No conozco una herramienta que pueda hacer esto, pero puede que no sea necesario. El truco es eliminar de las tablas en el orden correcto. Una vez tuve que hacer esto en Oracle. Oracle tiene sus propias tablas que contienen información sobre todas las relaciones entre las tablas que he creado. Al consultar este metatabla, pude obtener el orden correcto de las relaciones para eliminar sin haber tocado nunca una violación de contracción clave (lo estoy publicando como comentario porque no sé si esto es posible en MySQL). La otra opción (y de ejecución más rápida) es desactivar contraints, truncar, volver a habilitar las restricciones. – FrustratedWithFormsDesigner

Respuesta

7

La forma más sencilla de hacerlo es, probablemente, deshabilitar las comprobaciones de claves externas, luego truncar las tablas. Dado que las claves externas están deshabilitadas, el orden en que trunca las tablas no importa.

set foreign_key_checks = 0; 
truncate table parent; 
truncate table child; 
truncate table ... 

Incluso puede usar el esquema_información para generar los enunciados de la tabla truncada para usted. Algo como esto:

select concat('truncate table ',table_schema,'.',table_name,';') as sql_stmt 
from information_schema.tables 
where table_schema = 'your_schema_name' 
and table_type = 'base table'; 
+0

Gracias por la ayuda. Resolvió el problema. –

2

Puede colocar temporalmente o deshabilitar todas las restricciones, truncar todas las tablas y restaurar las restricciones. Tomé este enfoque para SQL Server y funciona bien.

http://lists.mysql.com/mysql/194954

Tal vez un enfoque aún mejor sería invertir el esquema en guiones (que se pone bajo control de versiones) y volver a crear la base de datos desde cero.

+0

Gracias. Probaré estas soluciones. –

+0

Gracias, resolvió el problema. –

Cuestiones relacionadas