테이블명을 바꾸는 쿼리문이,

alter table 원본테이블이름 rename 변경할테이블이름;

이렇게 한다는 건 알지만, 변경할 원본 테이블이 여러개일 경우는 어떻게 하는지 모르겠습니다.

phpmyadmin 툴을 사용해서 선택해서 바꾸는 건 알겠지만,

쿼리문으로 검색해서 찾아서 바꾸는 걸 모르겠습니다.

 

test1xe_*, test2xe_*, 등 여러개의 프리픽스들 중에서 'testxe_'로 시작하는 테이블을 찾아서

찾은 결과테이블들 모두 'testoldxe_'로 바꾸고자할 땐 어떻게 하나요?

 

찾아봤는데 이런 글이 있더라고요.

 

> show tables 쿼리를 통해 테이블목록을 얻어온후 이 결과값을 가지고 루프를 돌려

> 현재의 테이블명을 $old_table_name 변수에 저장하고 

> G5_TABLE_PREFIX 부분만 변경한뒤 변경된 이름을 $new_table_name 과 변경한후 

> ALTER TABLE $old_table_name RENAME $new_table_name 쿼리를 실행해 변경하면 됩니다.

 

여기서 show tables 전체가 아니라, 내가 원하는 테이블만 검색하는 것과

검색한 결과를 $old_table_name 변수로 저장하는 방법을 모르겠습니다;ㅁ;

 

20170315.png

testxe_ 를 testxe2_ 로 바꿀려고 하는데 잘못된 부분이 있나요?;

 

다른 방법으로,

SET @database   = "php1";
SET @old_prefix = "testxe_";
SET @new_prefix = "ttttxe_";
 
SELECT
    concat(
        "RENAME TABLE ",
        TABLE_NAME,
        " TO ",
        replace(TABLE_NAME, @old_prefix, @new_prefix),
        ';'
    ) AS "SQL"
FROM information_schema.TABLES WHERE TABLE_SCHEMA = @database;

 

이렇게 했는데...변경한 결과값이 표시는 되는데,

실제 변경은 안되는데 왜 그런지 아시나요..

 


https://sir.kr/qa/145401 - phpmyadmin으로 한꺼번에 선택해서 프리픽스 변경하는 방법

https://xe1.xpressengine.com/tip/21154478

  • Lv15
    SET @database = "php1";
    SET @old_prefix = "ttttxe_";
    SET @new_prefix = "testxe_";

    SELECT @query :=
    concat(
    "RENAME TABLE ",
    TABLE_NAME,
    " TO ",
    replace(TABLE_NAME, @old_prefix, @new_prefix),
    ';'
    ) AS "SQL"
    FROM information_schema.TABLES WHERE TABLE_SCHEMA = @database;

    prepare s from @query;

    execute s;

    이렇게 하면 변경은 되는데 한번씩 밖에 안되네요 ㅠ
  • Lv15
    SET @database = "php1";
    SET @old_prefix = "ttttxe_";
    SET @new_prefix = "testxe_";

    SELECT @query :=
    CONCAT("RENAME TABLE ",
    GROUP_CONCAT(
    TABLE_NAME,
    " TO ",
    replace(TABLE_NAME, @old_prefix, @new_prefix)
    ),";") AS "SQL"
    FROM information_schema.TABLES WHERE TABLE_SCHEMA = @database AND TABLE_NAME LIKE CONCAT('%',@old_prefix,'%');

    prepare s from @query;

    execute s;
    ================================
    이거에요.. 되긴 하는데 중간에 한번 멈추네요. 다시 실행하면 되긴 합니다;ㅁ;