MySQL에서 DB 테이블의 접두어 일부를 일괄 변경하는 법?
본문
에를 들어,
그누4 경우에 g4_
그누5 경우엔 g5_
이런식으로 테이블 첫 머리에 접두어가 붙는데,
이런 테이블의 접두어를 한번에 변경하는 SQL 명령어가 어떻게 되는지?
또, 만약 테이블 안의 필드의 접두어는 어떻게 한번에 변경이 가능한지도 궁금하네요.
답변 2
아마 sql문만으로는 안 될 겁니다.
ALTER TABLE 원래테이블명 RENAME 바꿀테이블명
이런 식으로 하시면 됩니다.
근데 이걸 자동으로 하시려면 php랑 섞어서 쓰셔야 합니다.
information_scheme 디빈가?
거기에 접속하셔서 TABLES라고 하는 테이블에서 현재 디비에 등록되어 있는 테이블명만 읽어 와서 그걸 뭐 str_replace 같은 구문으로 바꿔서 작업해 주시면 될 것 같네요.
직접 해 보시길 추천합니다.
물론 백업은 필수지요.
꼭 echo로 찍힌 거 phpmyadmin에 가져다가 테스트 해 보신 후에 주석 푸시길...
$query = sql_query("SELECT TABLE_SHEME AS tbl FROM INFORMATION_SCHEME.TABLES WHERE TABLE_SCHEM = '디비명'");
while($rows = sql_fetch_array($query)) {
$tar_name = str_replace("g4_", "g5_", $rows['tbl']);
//$rename = sql_query("ALTER TABLE ".$rows['tbl']." RENAME ".$tar_name);
echo "ALTER TABLE ".$rows['tbl']." RENAME ".$tar_name."<br />";
}
제가 알기로는 테이블 이름은 한번 정해지면 쭈욱 가는거로 알고 있습니다.
정 바꾸시겠다면 MySQL 을 덤프 받으시고 텍스트 편집기나 리눅스 VI를 열어 테이블명을 바꿔주시고 다시 MySQL 임포트 하시고
dbconfig.php 파일을 열어 접두어 부분 변수 값을 수정하고 다시 서버로 올리셔야 할듯 합니다.
그리고 프로그램 코드중에 접두어 변수를 안쓰고 테이블명을 다 써준 부분이 있으면 그 부분도 변경해 주셔야 할듯 합니다.
제 솜씨나 내공이나 경험이 부족해서인지 모르겠으나 SQL문으로 테이블명을 변경해준다는 이야기는 들어본 일이 없습니다.