내 공급자가 내 사이트에 설치되었습니다. Drupal CMS. 이제 이전 사이트의 모든 데이터를 복사해야합니다. 내 기존 DB에 접두어가없는 테이블이 있지만 새 DB에서는 모든 테이블에 dp_[table_name]
이라는 접두사가 있습니다.MySQL DB의 모든 테이블에서 접두어를 어떻게 바꿀 수 있습니까?
답변
저크 솔루션이 저에게 효과적이지 않았습니다. 테이블을 쿼리 할 수 있으려면 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.
각 테이블에 대해 RENAME TABLE을 실행할 스크립트를 작성하십시오. "시험"이 후 데이터베이스 이름
을 것으로 예상된다
SELECT
GROUP_CONCAT('RENAME TABLE `', TABLE_SCHEMA, '`.`', TABLE_NAME, '` TO `', TABLE_SCHEMA, '`.`prefix_', TABLE_NAME, '`;' SEPARATOR ' ')
FROM
`TABLES` WHERE `TABLE_SCHEMA` = "test";
할 수 있습니다 당신이 그것을
당신은 단순히 데이터베이스를 덤프 할 수 ;-) 실행 덤프를 열면 접두사를 추가합니다 긴 쿼리 텍스트 편집기를 사용하여 "CREATE TABLE"의 모든 항목을 "CREATE TABLE dp_"로 바꾸고 데이터베이스를 복원하십시오. 몇 분이 걸립니다.
데이터베이스가 몇 기가 바이트 이하가 될 때까지 ;-) – zerkms
나는 게임입니다. :) GB보다 큰 데이터베이스의 경우 쿼리 도구 (예 : SQL Workbench)를 사용하고 테이블 목록의 모든 테이블을 선택한 다음 내용을 스프레드 시트의 A 열 (내 경우 Calc)에 복사하고 다음을 입력합니다 & "; "B 셀의 수식을 다른 모든 B 열 셀에 붙여 넣고 이름 바꾸기 스크립트가 B 열에 나타납니다. –
제가 대답 한대로 -"B "테이블의 수식은"이름 바꾸기 테이블 "& A1" 이름 바꾸기 적절한 방법은 테이블 이름을 검색하려면 + information_shema – zerkms
phpMyAdmin을 당신이 지금이 작업을 수행 할 수 있습니다. "데이터베이스"레벨에서 구조 탭을 선택하여 모든 테이블을보십시오. '모두 선택'을 클릭하십시오 (테이블 목록 아래). 'With selected'드롭 다운 메뉴에서 'Replace table prefix'를 선택하십시오.
- 1. Mysql : 모든 테이블에서 결과 얻기
- 2. 어떻게 axis.jar을 바꿀 수 있습니까?
- 3. MYSQL : DB의 모든 테이블 중에서 선택하십시오
- 4. 테두리를 어떻게 바꿀 수 있습니까?
- 5. EditText를 어떻게 바꿀 수 있습니까?
- 6. 어떻게 mysql에서 데이터베이스의 이름을 바꿀 수 있습니까?
- 7. div와 그 뒤에 오는 모든 div를 어떻게 바꿀 수 있습니까?
- 8. Perl을 대체하기 전에 모든 텍스트를 어떻게 바꿀 수 있습니까?
- 9. 윈도우즈 컨트롤의`모든 욕구`속성을 어떻게 바꿀 수 있습니까?
- 10. Vim에서 폴더 내의 모든 파일을 어떻게 바꿀 수 있습니까?
- 11. tstring의 모든 경우를 wstring으로 바꿀 수 있습니까?
- 12. mysql db의 부울 필드
- 13. 레코드가 Mysql 테이블에서 사라졌습니다. 어떻게 된 일을 찾을 수 있습니까?
- 14. 모든 CSS 태그 앞에 브라우저 특정 접두어를 사용할 수 있습니까?
- 15. VIM에서이 텍스트를 어떻게 바꿀 수 있습니까?
- 16. ct100이란 무엇이며 이름을 어떻게 바꿀 수 있습니까?
- 17. 어떻게 '\'와 '/'문자를 '-'로 바꿀 수 있습니까?
- 18. 런타임에서 마스터 페이지를 어떻게 바꿀 수 있습니까?
- 19. 어떻게 기본 레이아웃 디렉토리를 바꿀 수 있습니까?
- 20. GridviewColumnHeader의 글꼴 크기를 어떻게 바꿀 수 있습니까?
- 21. db의 여러 테이블에서 phpthumb 이미지에 액세스
- 22. Javahelp 글꼴은 어떻게 바꿀 수 있습니까?
- 23. 목록의 요소는 어떻게 바꿀 수 있습니까?
- 24. 사각형이 이동하는 방향을 어떻게 바꿀 수 있습니까?
- 25. 내 TabHost를 어떻게 바꿀 수 있습니까?
- 26. UIPopoverController의 테두리 색을 어떻게 바꿀 수 있습니까?
- 27. PHP Permalinks .. 어떻게 바꿀 수 있습니까?
- 28. OpenID의 ReturnUrl을 어떻게 바꿀 수 있습니까?
- 29. QDateEdit에서 요일을 어떻게 바꿀 수 있습니까?
- 30. TCanvas의 textOut 높이를 어떻게 바꿀 수 있습니까?
Joomla를 사용하는 localhost XAMPP에서 작업 중이므로 자동 Joomla 접두사로 바꾸고 싶었 기 때문에 사실이 기능은 저에게 효과적이었습니다. 나는 당신의 계단을 따른다. 나는'information_schema'를 지정해야만했다. 당신이했던 것처럼'테이블'을 만들고 SET group_concat_max_len = 10240; 내 경우에는 많은 테이블이 있었기 때문에. +1 – MJoraid
또 하나의 요점은, 동일한 명령을 사용하여 데이터베이스 (예 : backup_db)에있는 테이블을 다음과 같이 이동시킬 수 있습니다 :'INFORMATION_SCHEMA에서 SELECT CONCAT ('RENAME TABLE', TABLE_NAME, 'TO backup_db.', TABLE_NAME, ';'). 테이블 위치 table_schema = 'testbot'; ' – sactiw
위대한'group_concat_max_len' 변수에 대한 편집! 나는 완전한 문장도 얻지 못하고, 위대한 일을했다! – AlexGH