Tengo una base de datos donde todas las tablas tienen el prefijo de un conjunto de los mismos caracteres. Esto se hizo porque en algún momento estaban en una base de datos compartida configurada para proyectos favoritos con cientos de otras tablas. La aplicación, y por lo tanto la base de datos, ahora está lista para salir de esa fase y estar lista para salir sola. Me gustaría eliminar el prefijo para cada una de las tablas. ¿Hay alguna manera más fácil de hacer esto en lugar de hacer clic derecho y cambiar el nombre de cada tabla individualmente?Renombrar todas las tablas en la base de datos
Respuesta
Podría hacer algo así como crear una secuencia de comandos de toda la base de datos y hacer una cadena de reemplazo en la secuencia de comandos, ejecutarla en una nueva base de datos y luego importar los datos. Esto, por supuesto, depende de qué tan bien puede coincidir con la cadena que se reemplazará. Es posible que deba hacer los cambios correspondientes en su aplicación también. Siempre puedes probar algo como esto en una base de datos de prueba para ver si funcionaría.
Tome un vistazo a esto también - Mass Renaming of Tables and Stored Procedures
Un método tiene algún costo y el otro es similar a mi sugerencia.
@Bratch +1 una manera mucho más agradable de decir lo que dije. – Hogan
@Hogan Sí, pero diferente.Su respuesta suena más como escribir un guión para modificar los metadatos. No digo que deba escribir un script en absoluto, simplemente escriba la base de datos como comandos SQL (clic con el botón derecho, tareas, generar scripts). Haga un buscar/reemplazar y reemplazar el prefijo con nada, y luego ejecute el SQL modificado en la nueva base de datos. Esto también cambiará el nombre de todas las referencias a las tablas en las vistas y sprocs. Un vistazo rápido al SQL generado por el script db debería dar una idea si funcionará bien o no. – Bratch
Puede escribir una secuencia de comandos para ver la metainformación y modificarla, pero ¿esto no arruinará todos sus SP y consultas parametrizadas?
Arruinará todo: vistas , etc. Si hay SCHEMABINDING en algo, eso tendrá que ser tratado primero ... –
Primero, escriba un procedimiento almacenado que tenga un parámetro de nombre de tabla y use el análisis sintáctico de cadenas y ALTER TABLE para eliminar el prefijo de la tabla especificada.
Luego, use sp_MSforeachtable para llamar a ese procedimiento para cada tabla.
Referencia: http://weblogs.sqlteam.com/joew/archive/2007/10/23/60383.aspx
select 'exec sp_rename @objname=' + name + ', @newname=' + replace(name ,'prefixedchars', '')
from sysObjects
where type = 'U'
Los resultados de este habrá algo como:
exec sp_rename @objname=prefixedcharsTable1, @newname=Table1
exec sp_rename @objname=prefixedcharsTable2, @newname=Table2
exec sp_rename @objname=prefixedcharsTable3, @newname=Table3
etc... for each table in your db
Todo lo que tiene que hacer es copiar esas declaraciones en una nueva ventana de consulta y ejecute.
Advertencias:
- obtendrá un mensaje de advertencia de la siguiente manera:
Caution: Changing any part of an object name could break scripts and stored procedures.
- Usted tendrá que cambiar el nombre de las tablas en cualquier procedimientos, funciones, vistas, almacenados y disparadores.
Esta es una gran solución porque puede ver el script de cambio de nombre antes de ejecutarse. –
Puramente desde la perspectiva de "reemplazo para hacer clic con el botón derecho, renombrar" (sin renombrar referencias, procedimientos, vistas, etc.) - mezcle un poco. Obtener la lista de tablas:
select name from sys.Tables
copiar y pegar en emacs (o su editor de línea de expresiones regulares favorito) y ejecutar un reemplazo de la línea de expresiones regulares: búsqueda \(xyz.*\)
y reemplazar con SP_RENAME 'xyz\1', '\1';
Este repalces la xyzFoo mesa con Foo. Pegue las líneas nuevamente en SQL Server y ejecútelo.
- 1. Lista de todas las tablas en la base de datos
- 2. ¿Cómo colocar todas las tablas en la base de datos sin soltar la base de datos?
- 3. Listar todas las tablas en una base de datos
- 4. PostgreSQL - Renombrar base de datos
- 5. Obtenga todas las tablas y todas las columnas de una base de datos odbc
- 6. Seleccionar de todas las tablas
- 7. Número total de campos en todas las tablas de la base de datos
- 8. Obtenga recuentos de todas las tablas en la base de datos MySQL
- 9. Cómo colocar todas las tablas de la base de datos con manage.py CLI en Django?
- 10. Recuperar una lista de todas las tablas en la base de datos
- 11. Eliminar datos de todas las tablas en MYSQL
- 12. ¿podemos listar todas las tablas en la base de datos msaccess usando sql?
- 13. Alterar las tablas de la base de datos en Django
- 14. Ordenar columnas en las tablas de la base de datos
- 15. Enumeraciones persistentes en las tablas de la base de datos
- 16. Psql enumera todas las tablas
- 17. MySQL OPTIMIZE todas las tablas?
- 18. Buscar todas las columnas de un cierto tipo en todas las tablas en una base de datos SQL Server
- 19. Doctrine crea automáticamente todas las tablas de la base de datos?
- 20. Sqlite: ¿Cómo reinicio todas las tablas de la base de datos?
- 21. Cómo generar DDL para todas las tablas en una base de datos en MySQL
- 22. ¿Cómo puedo crear una nueva base de datos SQLite, con todas las tablas, sobre la marcha?
- 23. ¿Es útil agregar una máscara de bits a todas las tablas en una base de datos?
- 24. ¿Cómo puedo cambiar los prefijos en todas las tablas de mi base de datos MySQL?
- 25. Django: elimine todos los datos de todas las tablas (pero conserve las tablas)
- 26. ¿Cómo puedo colocar todas las tablas en mi base de datos?
- 27. ¿Cómo se truncan todas las tablas en una base de datos utilizando TSQL?
- 28. ¿Cómo puedo listar todas las tablas en una base de datos con Squirrel SQL?
- 29. ¿Cómo ver todas las tablas en una base de datos HSQLDB?
- 30. Reparar todas las tablas de una vez
Habría creado una nueva base de datos, con el nuevo esquema de nombres para nuevas tablas, y seleccioné los datos. –
Eche un vistazo a esto también: "Cambio masivo de nombre de tablas y procedimientos almacenados" http://stackoverflow.com/questions/1098585/mass-renaming-of-tables-and-stored-procedures – Bratch