728x90
반응형
질문 : MySQL 데이터베이스의 이름을 빠르게 바꾸려면 어떻게합니까 (스키마 이름 변경)
에서 MySQL의 매뉴얼 MySQL은 이를 다루고 있습니다.
일반적으로 데이터베이스를 덤프하고 새 이름으로 다시 가져옵니다. 이것은 매우 큰 데이터베이스에 대한 옵션이 아닙니다. RENAME {DATABASE | SCHEMA} db_name TO new_db_name;
나쁜 일을하고 소수의 버전에만 존재하며 전반적으로 나쁜 생각입니다 .
이것은 MyISAM 과는 매우 다른 것을 저장 하는 InnoDB 와 함께 작동해야합니다.
답변
InnoDB 의 경우 다음이 작동하는 것 같습니다. 새 빈 데이터베이스를 만든 다음 각 테이블의 이름을 차례로 새 데이터베이스로 바꿉니다.
RENAME TABLE old_db.table TO new_db.table;
그 후에 권한을 조정해야합니다.
셸에서 스크립팅하려면 다음 중 하나를 사용할 수 있습니다.
mysql -u username -ppassword old_db -sNe 'show tables' | while read table; \
do mysql -u username -ppassword -sNe "rename table old_db.$table to new_db.$table"; done
또는
for table in `mysql -u root -ppassword -s -N -e "use old_db;show tables from old_db;"`; do mysql -u root -ppassword -s -N -e "use old_db;rename table old_db.$table to new_db.$table;"; done;
메모:
-p
옵션과 암호 사이에는 공백이 없습니다. 데이터베이스에 암호가없는 경우-u username -ppassword
부분을 제거하십시오.- 일부 테이블에 트리거가있는 경우 위의 방법을 사용하여 다른 데이터베이스로 이동할 수 없습니다 (
Trigger in wrong schema
오류로 트리거 발생). 이 경우 기존 방법을 사용하여 데이터베이스를 복제 한 다음 이전 데이터베이스를 삭제하십시오.mysqldump old_db | mysql new_db
- 저장 프로 시저가있는 경우 나중에 복사 할 수 있습니다.
mysqldump -R old_db | mysql new_db
- 일부 테이블에 트리거가있는 경우 위의 방법을 사용하여 다른 데이터베이스로 이동할 수 없습니다 (
Trigger in wrong schema
오류로 트리거 발생). 이 경우 기존 방법을 사용하여 데이터베이스를 복제 한 다음 이전 데이터베이스를 삭제하십시오.mysqldump old_db | mysql new_db
mysqldump -R old_db | mysql new_db
출처 : https://stackoverflow.com/questions/67093/how-do-i-quickly-rename-a-mysql-database-change-schema-name
728x90
반응형
'프로그래밍 언어 > Database' 카테고리의 다른 글
PostgreSQL 명령 줄 유틸리티를 종료하는 방법 : psql (0) | 2021.07.05 |
---|---|
MongoDB 또는 기타 문서 지향 데이터베이스 시스템의 사용시기 (0) | 2021.07.02 |
지정된 이름의 열을 포함하는 모든 테이블 찾기-MS SQL Server (0) | 2021.06.28 |
SQL은 열에 최대 값이있는 행만 선택합니다 (0) | 2021.06.28 |
데이터베이스 필드의 표준 길이 목록 (0) | 2021.06.28 |