2014-03-03 7 views
0

에서 부분 문자열을 교체 나는 xyz_table1, xyz_table2 ...테이블 이름 + mysql을

내가 abc 같은 일부 특정 문자열로 xyz을 대체 할 같은 테이블 이름을 가지고있다. 내가 RENAME TABLE과 테이블 이름을 이름을 바꾸려면 abc_table1, abc_table2 ...

, 그때 나는 모든 테이블에 대한 RENAME TABLE 스크립트를 작성해야 할 것 같은

그래서 테이블 이름이 될 것입니다. 300 개가 넘는 테이블이 있다면 너무 수동적입니다. 즉, 모든 테이블에 대해 RENAME TABLE 스크립트를 작성해야합니다.
그래서 테이블 이름의 부분 문자열을 대체하는 다른 방법이 있습니까?

+0

스토어드 프로 시저를 사용해보십시오. http://stackoverflow.com/questions/11642020/mysql-rename-multiple-tables-with-a-pattern – Shin

+0

@shin :: 답장을 보내 주셔서 감사합니다. 나는 그것에 대한 하나의 라이너 SQL 스크립트를 요구하고있다. –

답변

0

당신은 정보 스키마 테이블에 CONCAT을 실행할 수 있습니다

당신이 그것을

select concat("alter table " . TABLE_NAME . " to " .replace(TABLE_NAME , "xyz", "abc"). ";") from information_schema.TABLES where TABLE_SCHEMA="database_name" ; 

출력하고 당신이 그것을 실행할 수 있습니다 후 확인할 수 있습니다

mysql --batch --skip-column-names --execute \ 
'select concat("alter table " . TABLE_NAME . " to " .replace(TABLE_NAME , "xyz", "abc"). ";") 
from information_schema.TABLES where TABLE_SCHEMA="database_name"' | mysql 
0

당신이 따를 때 그것을 할 수 있습니다, `

1) show tables. 
2) copy all the table names. 
3) paste it in an excel sheet. 
4) apply formula for creating a rename query and drag it to apply for remaining 300 tables. 
5) copy the queries and run.` 

2 ~ 3 분이 소요됩니다. 그게 다야.