2016-07-25 1 views
1

J'ai une base de données contenant 100 tables. sur 100 certaines tables ont un nom comme House, House1, House2 , HouseXYZ et ainsi de suite. Maintenant, je veux écrire un script en MySQL et MsSQL pour remplacer le House avec Home. Donc, ma base de données devrait avoir le nom de la table Home, Home1, Home2, HomeXYZ et ainsi de suite.Script SQL pour renommer tous les noms de table avec un nouveau nom s'il contient la chaîne requise dans mySQL et MsSQL

+0

Vous êtes sûr que vous voulez faire cette? Tous les objets existants qui référencent des tables perdront la référence. c'est-à-dire que vous devrez éditer toutes les fonctions, procédures, déclencheurs ... – scsimon

+1

Copie possible de [Renommer toutes les tables dans la base de données] (http://stackoverflow.com/questions/2008412/rename-all-tables-in-database) – scsimon

+0

oui, je dois le faire. Je dois faire de même avec les colonnes. – user2425779

Répondre

0

Comme mentionné here vous vous feriez cela pour vos noms de table:

select 'exec sp_rename @objname=' + name + ', @newname=' + replace(name ,'House', 'Home') 
from sysObjects 
where type = 'U' 
0

--MSSQL

SELECT 'exec sp_rename @objname=' + NAME + ', @newname=' + replace(NAME, 'House', 'Home') 
FROM sysObjects 
WHERE type = 'U' 
    AND NAME LIKE 'House%' 

--MYSQL

SELECT CONCAT (
     'ALTER TABLE ' 
     ,table_name 
     ,' RENAME ' 
     ,replace(table_name, 'House', 'Home') 
     ) 
FROM information_schema.tables 
WHERE table_name LIKE 'House%'