2010-03-17 3 views

답변

26

저크 솔루션이 저에게 효과적이지 않았습니다. 테이블을 쿼리 할 수 ​​있으려면 information_schema 데이터베이스를 지정해야했습니다.

SELECT 
    CONCAT('RENAME TABLE ', GROUP_CONCAT('`', TABLE_SCHEMA, '`.`', TABLE_NAME, '` TO `', TABLE_SCHEMA, '`.`prefix_', TABLE_NAME, '`')) AS q 
FROM 
    `information_schema`.`Tables` WHERE TABLE_SCHEMA='test'; 

편집 :

에만 호출 RENAME 테이블에 쿼리 한 번 최적화. 내가 들어온 사실은 연결된 출력물이 341 자로 잘린 사실이었습니다. 이것은 더 높은 값으로 MySQL의 변수 group_concat_max_len을 설정하여 (서버에서 허용하는 경우) 해결할 수 있습니다

SET group_concat_max_len = 3072; -- UTF8 assumes each character will take 3 bytes, so 3072/3 = 1024 characters. 
+0

Joomla를 사용하는 localhost XAMPP에서 작업 중이므로 자동 Joomla 접두사로 바꾸고 싶었 기 때문에 사실이 기능은 저에게 효과적이었습니다. 나는 당신의 계단을 따른다. 나는'information_schema'를 지정해야만했다. 당신이했던 것처럼'테이블'을 만들고 SET group_concat_max_len = 10240; 내 경우에는 많은 테이블이 있었기 때문에. +1 – MJoraid

+1

또 하나의 요점은, 동일한 명령을 사용하여 데이터베이스 (예 : backup_db)에있는 테이블을 다음과 같이 이동시킬 수 있습니다 :'INFORMATION_SCHEMA에서 SELECT CONCAT ('RENAME TABLE', TABLE_NAME, 'TO backup_db.', TABLE_NAME, ';'). 테이블 위치 table_schema = 'testbot'; ' – sactiw

+0

위대한'group_concat_max_len' 변수에 대한 편집! 나는 완전한 문장도 얻지 못하고, 위대한 일을했다! – AlexGH

21

각 테이블에 대해 RENAME TABLE을 실행할 스크립트를 작성하십시오. "시험"이 후 데이터베이스 이름

을 것으로 예상된다

SELECT 
    GROUP_CONCAT('RENAME TABLE `', TABLE_SCHEMA, '`.`', TABLE_NAME, '` TO `', TABLE_SCHEMA, '`.`prefix_', TABLE_NAME, '`;' SEPARATOR ' ') 
FROM 
    `TABLES` WHERE `TABLE_SCHEMA` = "test"; 

할 수 있습니다 당신이 그것을

3

당신은 단순히 데이터베이스를 덤프 할 수 ;-) 실행 덤프를 열면 접두사를 추가합니다 긴 쿼리 텍스트 편집기를 사용하여 "CREATE TABLE"의 모든 항목을 "CREATE TABLE dp_"로 바꾸고 데이터베이스를 복원하십시오. 몇 분이 걸립니다.

+2

데이터베이스가 몇 기가 바이트 이하가 될 때까지 ;-) – zerkms

+0

나는 게임입니다. :) GB보다 큰 데이터베이스의 경우 쿼리 도구 (예 : SQL Workbench)를 사용하고 테이블 목록의 모든 테이블을 선택한 다음 내용을 스프레드 시트의 A 열 (내 경우 Calc)에 복사하고 다음을 입력합니다 & "; "B 셀의 수식을 다른 모든 B 열 셀에 붙여 넣고 이름 바꾸기 스크립트가 B 열에 나타납니다. –

+0

제가 대답 한대로 -"B "테이블의 수식은"이름 바꾸기 테이블 "& A1" 이름 바꾸기 적절한 방법은 테이블 이름을 검색하려면 + information_shema – zerkms

10

phpMyAdmin을 당신이 지금이 작업을 수행 할 수 있습니다. "데이터베이스"레벨에서 구조 탭을 선택하여 모든 테이블을보십시오. '모두 선택'을 클릭하십시오 (테이블 목록 아래). 'With selected'드롭 다운 메뉴에서 'Replace table prefix'를 선택하십시오.

관련 문제