MySQL에서 DB 테이블의 접두어 일부를 일괄 변경하는 법?

MySQL에서 DB 테이블의 접두어 일부를 일괄 변경하는 법?

QA

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 />"; 
}
 

SELECT TABLE_SHEME AS tbl FROM INFORMATION_SCHEME.TABLES WHERE TABLE_SCHEM = '디비명'
여기 오타가 있네요. ㅎㅎ

SELECT TABLE_NAME AS tbl FROM INFORMATION_SCHEME.TABLES WHERE TABLE_SCHEMA = '디비명'
이걸로 바꾸세요.

지금 cafe24 웹 호스팅에서 테스트를 해 보니 SELECT command denied로 나오네요.
dothome.co.kr 무료 호스팅에선 INFORMATION_SHCEME 디비에 접속 가능한데...
저기 접속이 불가능하면 제가 알려 드린 거 확인이 안 될 겁니다.

제가 알기로는 테이블 이름은 한번 정해지면 쭈욱 가는거로 알고 있습니다.

 

정 바꾸시겠다면 MySQL 을 덤프 받으시고 텍스트 편집기나 리눅스 VI를 열어 테이블명을 바꿔주시고 다시 MySQL 임포트 하시고

 

dbconfig.php 파일을 열어 접두어 부분 변수 값을 수정하고 다시 서버로 올리셔야 할듯 합니다.

 

그리고 프로그램 코드중에 접두어 변수를 안쓰고 테이블명을 다 써준 부분이 있으면 그 부분도 변경해 주셔야 할듯 합니다.

 

 

제 솜씨나 내공이나 경험이 부족해서인지 모르겠으나 SQL문으로 테이블명을 변경해준다는 이야기는 들어본 일이 없습니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 153
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT