DB의 다수테이블의 변수형을 한꺼번에 바꾸기 정보
DB의 다수테이블의 변수형을 한꺼번에 바꾸기관련링크
http://www.mtstyle.net
184회 연결
첨부파일
본문
그누보드4 게시물의 내용은 그누보드 DB정보를 보면 text형으로 되어있습니다.
text형 저장공간 한계로 인해서 게시판에 장문의 글을 쓸 경우 글이 짤려서 저장됩니다.
그래서 text형을 mediumtext형으로 전부 바꾸기로 결심했습니다.
그런데 게시판이 한두개도 아니고 자그마치 109개(-_-;) 나 되더라구요.
20개 이하면 그냥 일일이 phpMyAdmin에서 수정하겠지만 109개라는 미친 숫자에 감탄을 할 수밖에 없더라구요.
그래서 그동안 한번도 안써본 쿼리문을 써보자고 결심을 했죠.
우선 쿼리문을 조사하기 위해 게시판중에서 하나를 phpMyAdmin에서 변경해보았죠.
변경을 해보니
-----------------------------------------------------------------------------------------------------------------------------------------
테이블 g4_write_CodeDic01 을(를) 변경하였습니다.
SQL 질의 : [수정] [PHP 코드 보기]
ALTER TABLE `g4_write_CodeDic01` CHANGE `wr_content` `wr_content` MEDIUMTEXT NOT NULL
-----------------------------------------------------------------------------------------------------------------------------------------
라고 출력하더라구요.
우선 쿼리문을 알아냈고 php에서 쿼리문을 어떻게 실행시킬지 그누보드 파일 몇개를 조사해보니 db접속은 _common.php을 인클루드 하면 되고 sql문 실행은 sql_query함수 쓰면 되더라구요.
우선 저의 그누보드 DB 구조를 조사했습니다.
저는 게시판을 생성할때 그룹별로 일련번호를 붙여서 생성했죠.
예를 들어 CodeDic그룹에 게시판이 3개면 CodeDic01,CodeDic02,CodeDic03 이렇게 게시판명을 붙여줬죠.
그룹은 9개밖에 안되고 그룹별로 배열화 되어있으니 일이 정말 쉬웠습니다.
이중for문을 돌려주면 끝이니까요.
코딩을 하고 여러차례 최적화해서 완성한 소스는 아래와 같습니다.
-----------------------------------------------------------------------------------------------------------------------------------------
include_once("./_common.php"); // DB 접속
///////////////////////////////////////////////////////////////////////////////////////
$v1_switch=true; // true : 'v1 on mode', false : 'v1 off mode'
$run=false; // true : 'run mode', false : 'test mode'
$v0="CodeDic Community Gallery MT MTStyle PDS QnA Temp TipnTech"; // 게시판 테이블명
$v1="20 6 5 12 7 7 24 3 25"; // 게시판 테이블별 배열 개수
$form="mediumtext"; // 종류 : text, mediumtext, longtext
///////////////////////////////////////////////////////////////////////////////////////
$var0=explode(" ",$v0);
$var1=explode(" ",$v1);
for($i=0;$i if($v1_switch) {
for($j=1;$j<$var1[$i]+1;$j++) {
if($j>0&&$j<10)
$num="0".$j;
else
$num=$j;
$name="g4_write_".$var0[$i].$num;
if($run)
sql_query("ALTER TABLE $name CHANGE `wr_content` `wr_content` $form NOT NULL");
else
echo $name."
";
}
}
else {
$name="g4_write_".$var0[$i];
if($run)
sql_query("ALTER TABLE $name CHANGE `wr_content` `wr_content` $form NOT NULL");
else
echo $name."
";
}
?>
-----------------------------------------------------------------------------------------------------------------------------------------
나중에 또 사용할 경우와 범용성을 위해서 핵심 소스와 사용자 변수를 구분지어서 나눠놨습니다.
따로 주석까지 닿아놓은 $v1_switch,$run,$v0,$v1,$form함수의 값만 변경해주면 어떤 상황에서도 쓸 수 있는 소스입니다.
저의 버릇처럼 게시판 테이블명을 배열화해서 이름 붙여놓으신 분은 $v1_switch를 true로 하고 게시판 테이블명을 $v0에 입력해주시고 $v1에는 각각의 개수를 적어주세요.
그리고 그냥 일반적인 방법인 게시판 테이블명이 제각각이신분은 $v1은 무시하시고 $v1_switch값을 false로 하시고 $v0에는 게시판의 테이블명을 적어주세요.
$run을 true로 하면 바로 db에 적용되고 false를 하면 db에 적용되지않고 화면에 적용할 테이블명 리스트가 출력됩니다. 일종의 테스트죠.
$form에는 text, mediumtext, longtext 중에서 알아서 선택해서 적으세요.
그누보드4 기본설정은 text이고 저는 mediumtext로 확장시켰습니다. 제가 DB를 공부한적이 없어서 text와 mediumtext가 게시판 성능에 얼마나 영향을 미칠지는 모르지만 알아서 생각해보시고 적용하시기 바랍니다. mediumtext형은 16MB분량의 글을 저장할 수 있고 longtext형은 4GB분량의 글을 저장할 수 있습니다. 보통 웹호스팅 max upload 제한이 10M정도인걸 생각하면 mediumtext형이 적당합니다. longtext형은 미친짓입니다. 설령 개인서버라서 무제한이라고 해도 timeout걸리거나 테스트파일을 압축해서 올리는게 효율적이죠.
PHP파일은 그누보드4 최상위 디렉토리에 업로드 시키시면 됩니다. _common.php파일이 있는 위치이죠. ^^
그리고 여기서 끝내면 그동안 생성한 게시판에만 mediumtext형이 됩니다.
앞으로 생성할 게시판도 mediumtext형으로 하려면 adm디렉토리에 있는 sql_write.sq파일의 22줄을
-----------------------------------
wr_content mediumtext NOT NULL,
-----------------------------------
으로 변경해주면 됩니다.
궁금한 사항이 있으면 꼬리말 남겨주세요.
-----------------------------------------------------------------------------------------------------------------------------------------
[$v1_switch=true 이고 $run=false 일 경우의 제 홈페이지 소스 실행 결과]
-----------------------------------------------------------------------------------------------------------------------------------------
g4_write_CodeDic01
g4_write_CodeDic02
g4_write_CodeDic03
g4_write_CodeDic04
g4_write_CodeDic05
g4_write_CodeDic06
g4_write_CodeDic07
g4_write_CodeDic08
g4_write_CodeDic09
g4_write_CodeDic10
g4_write_CodeDic11
g4_write_CodeDic12
g4_write_CodeDic13
g4_write_CodeDic14
g4_write_CodeDic15
g4_write_CodeDic16
g4_write_CodeDic17
g4_write_CodeDic18
g4_write_CodeDic19
g4_write_CodeDic20
g4_write_Community01
g4_write_Community02
g4_write_Community03
g4_write_Community04
g4_write_Community05
g4_write_Community06
g4_write_Community07
g4_write_Gallery01
g4_write_Gallery02
g4_write_Gallery03
g4_write_Gallery04
g4_write_Gallery05
g4_write_MT01
g4_write_MT02
g4_write_MT03
g4_write_MT04
g4_write_MT05
g4_write_MT06
g4_write_MT07
g4_write_MT08
g4_write_MT09
g4_write_MT10
g4_write_MT11
g4_write_MT12
g4_write_MTStyle01
g4_write_MTStyle02
g4_write_MTStyle03
g4_write_MTStyle04
g4_write_MTStyle05
g4_write_MTStyle06
g4_write_MTStyle07
g4_write_MTStyle08
g4_write_PDS01
g4_write_PDS02
g4_write_PDS03
g4_write_PDS04
g4_write_PDS05
g4_write_PDS06
g4_write_PDS07
g4_write_QnA01
g4_write_QnA02
g4_write_QnA03
g4_write_QnA04
g4_write_QnA05
g4_write_QnA06
g4_write_QnA07
g4_write_QnA08
g4_write_QnA09
g4_write_QnA10
g4_write_QnA11
g4_write_QnA12
g4_write_QnA13
g4_write_QnA14
g4_write_QnA15
g4_write_QnA16
g4_write_QnA17
g4_write_QnA18
g4_write_QnA19
g4_write_QnA20
g4_write_QnA21
g4_write_QnA22
g4_write_QnA23
g4_write_QnA24
g4_write_Temp01
g4_write_Temp02
g4_write_Temp03
g4_write_TipnTech01
g4_write_TipnTech02
g4_write_TipnTech03
g4_write_TipnTech04
g4_write_TipnTech05
g4_write_TipnTech06
g4_write_TipnTech07
g4_write_TipnTech08
g4_write_TipnTech09
g4_write_TipnTech10
g4_write_TipnTech11
g4_write_TipnTech12
g4_write_TipnTech13
g4_write_TipnTech14
g4_write_TipnTech15
g4_write_TipnTech16
g4_write_TipnTech17
g4_write_TipnTech18
g4_write_TipnTech19
g4_write_TipnTech20
g4_write_TipnTech21
g4_write_TipnTech22
g4_write_TipnTech23
g4_write_TipnTech24
g4_write_TipnTech25
-----------------------------------------------------------------------------------------------------------------------------------------
[$v1_switch=false 이고 $run=false 일 경우의 제 홈페이지 소스 실행 결과]
-----------------------------------------------------------------------------------------------------------------------------------------
g4_write_CodeDic
g4_write_Community
g4_write_Gallery
g4_write_MT
g4_write_MTStyle
g4_write_PDS
g4_write_QnA
g4_write_Temp
g4_write_TipnTech
-----------------------------------------------------------------------------------------------------------------------------------------
TINYTEXT : 255개의 문자를 저장할 수 있다.
TEXT : 65535개의 문자를 저장할 수 있다.
MEDIUMTEXT : 16777215(16MB분량)개의 문자를 저장할 수 있다.
LONGTEXT : 4294967295(4GB분량)개의 문자를 저장할 수 있다.
text형 저장공간 한계로 인해서 게시판에 장문의 글을 쓸 경우 글이 짤려서 저장됩니다.
그래서 text형을 mediumtext형으로 전부 바꾸기로 결심했습니다.
그런데 게시판이 한두개도 아니고 자그마치 109개(-_-;) 나 되더라구요.
20개 이하면 그냥 일일이 phpMyAdmin에서 수정하겠지만 109개라는 미친 숫자에 감탄을 할 수밖에 없더라구요.
그래서 그동안 한번도 안써본 쿼리문을 써보자고 결심을 했죠.
우선 쿼리문을 조사하기 위해 게시판중에서 하나를 phpMyAdmin에서 변경해보았죠.
변경을 해보니
-----------------------------------------------------------------------------------------------------------------------------------------
테이블 g4_write_CodeDic01 을(를) 변경하였습니다.
SQL 질의 : [수정] [PHP 코드 보기]
ALTER TABLE `g4_write_CodeDic01` CHANGE `wr_content` `wr_content` MEDIUMTEXT NOT NULL
-----------------------------------------------------------------------------------------------------------------------------------------
라고 출력하더라구요.
우선 쿼리문을 알아냈고 php에서 쿼리문을 어떻게 실행시킬지 그누보드 파일 몇개를 조사해보니 db접속은 _common.php을 인클루드 하면 되고 sql문 실행은 sql_query함수 쓰면 되더라구요.
우선 저의 그누보드 DB 구조를 조사했습니다.
저는 게시판을 생성할때 그룹별로 일련번호를 붙여서 생성했죠.
예를 들어 CodeDic그룹에 게시판이 3개면 CodeDic01,CodeDic02,CodeDic03 이렇게 게시판명을 붙여줬죠.
그룹은 9개밖에 안되고 그룹별로 배열화 되어있으니 일이 정말 쉬웠습니다.
이중for문을 돌려주면 끝이니까요.
코딩을 하고 여러차례 최적화해서 완성한 소스는 아래와 같습니다.
-----------------------------------------------------------------------------------------------------------------------------------------
include_once("./_common.php"); // DB 접속
///////////////////////////////////////////////////////////////////////////////////////
$v1_switch=true; // true : 'v1 on mode', false : 'v1 off mode'
$run=false; // true : 'run mode', false : 'test mode'
$v0="CodeDic Community Gallery MT MTStyle PDS QnA Temp TipnTech"; // 게시판 테이블명
$v1="20 6 5 12 7 7 24 3 25"; // 게시판 테이블별 배열 개수
$form="mediumtext"; // 종류 : text, mediumtext, longtext
///////////////////////////////////////////////////////////////////////////////////////
$var0=explode(" ",$v0);
$var1=explode(" ",$v1);
for($i=0;$i if($v1_switch) {
for($j=1;$j<$var1[$i]+1;$j++) {
if($j>0&&$j<10)
$num="0".$j;
else
$num=$j;
$name="g4_write_".$var0[$i].$num;
if($run)
sql_query("ALTER TABLE $name CHANGE `wr_content` `wr_content` $form NOT NULL");
else
echo $name."
";
}
}
else {
$name="g4_write_".$var0[$i];
if($run)
sql_query("ALTER TABLE $name CHANGE `wr_content` `wr_content` $form NOT NULL");
else
echo $name."
";
}
?>
-----------------------------------------------------------------------------------------------------------------------------------------
나중에 또 사용할 경우와 범용성을 위해서 핵심 소스와 사용자 변수를 구분지어서 나눠놨습니다.
따로 주석까지 닿아놓은 $v1_switch,$run,$v0,$v1,$form함수의 값만 변경해주면 어떤 상황에서도 쓸 수 있는 소스입니다.
저의 버릇처럼 게시판 테이블명을 배열화해서 이름 붙여놓으신 분은 $v1_switch를 true로 하고 게시판 테이블명을 $v0에 입력해주시고 $v1에는 각각의 개수를 적어주세요.
그리고 그냥 일반적인 방법인 게시판 테이블명이 제각각이신분은 $v1은 무시하시고 $v1_switch값을 false로 하시고 $v0에는 게시판의 테이블명을 적어주세요.
$run을 true로 하면 바로 db에 적용되고 false를 하면 db에 적용되지않고 화면에 적용할 테이블명 리스트가 출력됩니다. 일종의 테스트죠.
$form에는 text, mediumtext, longtext 중에서 알아서 선택해서 적으세요.
그누보드4 기본설정은 text이고 저는 mediumtext로 확장시켰습니다. 제가 DB를 공부한적이 없어서 text와 mediumtext가 게시판 성능에 얼마나 영향을 미칠지는 모르지만 알아서 생각해보시고 적용하시기 바랍니다. mediumtext형은 16MB분량의 글을 저장할 수 있고 longtext형은 4GB분량의 글을 저장할 수 있습니다. 보통 웹호스팅 max upload 제한이 10M정도인걸 생각하면 mediumtext형이 적당합니다. longtext형은 미친짓입니다. 설령 개인서버라서 무제한이라고 해도 timeout걸리거나 테스트파일을 압축해서 올리는게 효율적이죠.
PHP파일은 그누보드4 최상위 디렉토리에 업로드 시키시면 됩니다. _common.php파일이 있는 위치이죠. ^^
그리고 여기서 끝내면 그동안 생성한 게시판에만 mediumtext형이 됩니다.
앞으로 생성할 게시판도 mediumtext형으로 하려면 adm디렉토리에 있는 sql_write.sq파일의 22줄을
-----------------------------------
wr_content mediumtext NOT NULL,
-----------------------------------
으로 변경해주면 됩니다.
궁금한 사항이 있으면 꼬리말 남겨주세요.
-----------------------------------------------------------------------------------------------------------------------------------------
[$v1_switch=true 이고 $run=false 일 경우의 제 홈페이지 소스 실행 결과]
-----------------------------------------------------------------------------------------------------------------------------------------
g4_write_CodeDic01
g4_write_CodeDic02
g4_write_CodeDic03
g4_write_CodeDic04
g4_write_CodeDic05
g4_write_CodeDic06
g4_write_CodeDic07
g4_write_CodeDic08
g4_write_CodeDic09
g4_write_CodeDic10
g4_write_CodeDic11
g4_write_CodeDic12
g4_write_CodeDic13
g4_write_CodeDic14
g4_write_CodeDic15
g4_write_CodeDic16
g4_write_CodeDic17
g4_write_CodeDic18
g4_write_CodeDic19
g4_write_CodeDic20
g4_write_Community01
g4_write_Community02
g4_write_Community03
g4_write_Community04
g4_write_Community05
g4_write_Community06
g4_write_Community07
g4_write_Gallery01
g4_write_Gallery02
g4_write_Gallery03
g4_write_Gallery04
g4_write_Gallery05
g4_write_MT01
g4_write_MT02
g4_write_MT03
g4_write_MT04
g4_write_MT05
g4_write_MT06
g4_write_MT07
g4_write_MT08
g4_write_MT09
g4_write_MT10
g4_write_MT11
g4_write_MT12
g4_write_MTStyle01
g4_write_MTStyle02
g4_write_MTStyle03
g4_write_MTStyle04
g4_write_MTStyle05
g4_write_MTStyle06
g4_write_MTStyle07
g4_write_MTStyle08
g4_write_PDS01
g4_write_PDS02
g4_write_PDS03
g4_write_PDS04
g4_write_PDS05
g4_write_PDS06
g4_write_PDS07
g4_write_QnA01
g4_write_QnA02
g4_write_QnA03
g4_write_QnA04
g4_write_QnA05
g4_write_QnA06
g4_write_QnA07
g4_write_QnA08
g4_write_QnA09
g4_write_QnA10
g4_write_QnA11
g4_write_QnA12
g4_write_QnA13
g4_write_QnA14
g4_write_QnA15
g4_write_QnA16
g4_write_QnA17
g4_write_QnA18
g4_write_QnA19
g4_write_QnA20
g4_write_QnA21
g4_write_QnA22
g4_write_QnA23
g4_write_QnA24
g4_write_Temp01
g4_write_Temp02
g4_write_Temp03
g4_write_TipnTech01
g4_write_TipnTech02
g4_write_TipnTech03
g4_write_TipnTech04
g4_write_TipnTech05
g4_write_TipnTech06
g4_write_TipnTech07
g4_write_TipnTech08
g4_write_TipnTech09
g4_write_TipnTech10
g4_write_TipnTech11
g4_write_TipnTech12
g4_write_TipnTech13
g4_write_TipnTech14
g4_write_TipnTech15
g4_write_TipnTech16
g4_write_TipnTech17
g4_write_TipnTech18
g4_write_TipnTech19
g4_write_TipnTech20
g4_write_TipnTech21
g4_write_TipnTech22
g4_write_TipnTech23
g4_write_TipnTech24
g4_write_TipnTech25
-----------------------------------------------------------------------------------------------------------------------------------------
[$v1_switch=false 이고 $run=false 일 경우의 제 홈페이지 소스 실행 결과]
-----------------------------------------------------------------------------------------------------------------------------------------
g4_write_CodeDic
g4_write_Community
g4_write_Gallery
g4_write_MT
g4_write_MTStyle
g4_write_PDS
g4_write_QnA
g4_write_Temp
g4_write_TipnTech
-----------------------------------------------------------------------------------------------------------------------------------------
TINYTEXT : 255개의 문자를 저장할 수 있다.
TEXT : 65535개의 문자를 저장할 수 있다.
MEDIUMTEXT : 16777215(16MB분량)개의 문자를 저장할 수 있다.
LONGTEXT : 4294967295(4GB분량)개의 문자를 저장할 수 있다.
추천
1
1
댓글 2개
이 소스는 응용범위가 무궁무진합니다. 쿼리문 한줄만 수정하면 다중테이블의 어떤 값이라도 변경가능합니다.
cheditor 스킨을 쓸경우 태그때문에 짤리는경우가 있었는데 이렇게 데이터 형을 바꿔버리면 되겠군요!
감사합니다..
감사합니다..