From 46700f351c1b30209f6539de39532b11447f9a1d Mon Sep 17 00:00:00 2001 From: chicpro Date: Tue, 28 Jan 2014 15:38:37 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B7=B8=EB=88=84=EB=B3=B4=EB=93=9C4=20DB=20?= =?UTF-8?q?=EB=8D=B0=EC=9D=B4=ED=84=B0=20=EC=9D=B4=EC=A0=84=20=ED=94=84?= =?UTF-8?q?=EB=A1=9C=EA=B7=B8=EB=9E=A8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- g4_import.php | 44 ++++++ g4_import_run.php | 387 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 431 insertions(+) create mode 100644 g4_import.php create mode 100644 g4_import_run.php diff --git a/g4_import.php b/g4_import.php new file mode 100644 index 000000000..5a86b6444 --- /dev/null +++ b/g4_import.php @@ -0,0 +1,44 @@ + + +
+

이 프로그램은 그누보드5 설치 후 바로 실행하셔야만 합니다.
+ 만약 그누보드5 사이트를 운영 중에 이 프로그램을 실행하시면 DB 데이터가
+ 망실되거나 데이터의 오류가 발생할 수 있습니다. 또한 중복해서 실행하실
+ 경우에도 DB 데이터의 오류가 발생할 수 있으니 반드시 한번만 실행해 주십시오. +

+

프로그램을 실행하시려면 그누보드4의 config.php 파일 경로를 입력하신 후 확인을 클릭해 주십시오.

+
+
+ + + +
+

+ 경로는 그누보드5 설치 루트를 기준으로 그누보드4의 config.php 파일의 상대경로입니다.
+ 예를 들어 그누보드4를 웹루트에 설치하셨고 그누보드5를 g5라는 하위 폴더에 설치하셨다면
+ 입력하실 경로는 ../config.php 입니다. +

+
+
+ + + + \ No newline at end of file diff --git a/g4_import_run.php b/g4_import_run.php new file mode 100644 index 000000000..df0c641cb --- /dev/null +++ b/g4_import_run.php @@ -0,0 +1,387 @@ + + + +$val) { + if($key == 'mb_no') + continue; + + if(!in_array($key, $columns)) + continue; + + $sql_common .= $comma . " $key = '".addslashes($val)."' "; + + $comma = ','; + } + + sql_query(" INSERT INTO {$g5['member_table']} SET $sql_common "); +} + +echo '

member table 복사

'.PHP_EOL; +unset($columns); +unset($fiels); + +// point table 복사 +$sql = " select * from {$g4['point_table']} "; +$result = sql_query($sql); +for($i=0; $row=sql_fetch_array($result); $i++) { + if($is_euckr) + $row = array_map('iconv_utf8', $row); + + $comma = ''; + $sql_common = ''; + + foreach($row as $key=>$val) { + if($key == 'po_id') + continue; + + $sql_common .= $comma . " $key = '".addslashes($val)."' "; + + $comma = ','; + } + + sql_query(" INSERT INTO {$g5['point_table']} SET $sql_common "); +} +echo '

point table 복사

'.PHP_EOL; + +// login table 복사 +$sql = " select * from {$g4['login_table']} "; +$result = sql_query($sql); +for($i=0; $row=sql_fetch_array($result); $i++) { + if($is_euckr) + $row = array_map('iconv_utf8', $row); + + // 중복체크 + $sql2 = " select count(*) as cnt from {$g5['login_table']} where lo_ip = '{$row['lo_ip']}' "; + $row2 = sql_fetch($sql2); + if($row2['cnt']) + continue; + + $comma = ''; + $sql_common = ''; + + foreach($row as $key=>$val) { + $sql_common .= $comma . " $key = '".addslashes($val)."' "; + + $comma = ','; + } + + sql_query(" INSERT INTO {$g5['login_table']} SET $sql_common "); +} +echo '

login table 복사

'.PHP_EOL; + +// visit table 복사 +$sql = " select * from {$g4['visit_table']} "; +$result = sql_query($sql); +for($i=0; $row=sql_fetch_array($result); $i++) { + if($is_euckr) + $row = array_map('iconv_utf8', $row); + + // 중복체크 + $sql2 = " select count(*) as cnt from {$g5['visit_table']} where vi_ip = '{$row['vi_ip']}' and vi_date = '{$row['vi_date']}' "; + $row2 = sql_fetch($sql2); + if($row2['cnt']) + continue; + + $comma = ''; + $sql_common = ''; + + foreach($row as $key=>$val) { + $sql_common .= $comma . " $key = '".addslashes($val)."' "; + + $comma = ','; + } + + sql_query(" INSERT INTO {$g5['visit_table']} SET $sql_common "); +} +echo '

visit table 복사

'.PHP_EOL; + +// visit sum table 복사 +$sql = " select * from {$g4['visit_sum_table']} "; +$result = sql_query($sql); +for($i=0; $row=sql_fetch_array($result); $i++) { + if($is_euckr) + $row = array_map('iconv_utf8', $row); + + // 중복체크 + $sql2 = " select count(*) as cnt from {$g5['visit_sum_table']} where vs_date = '{$row['vs_date']}' "; + $row2 = sql_fetch($sql2); + if($row2['cnt']) + continue; + + $comma = ''; + $sql_common = ''; + + foreach($row as $key=>$val) { + $sql_common .= $comma . " $key = '".addslashes($val)."' "; + + $comma = ','; + } + + sql_query(" INSERT INTO {$g5['visit_sum_table']} SET $sql_common "); +} +echo '

visit sum table 복사

'.PHP_EOL; + +// group table 복사 +$columns = array(); +$fields = mysql_list_fields(G5_MYSQL_DB, $g5['group_table']); +$count = mysql_num_fields($fields); +for ($i = 0; $i < $count; $i++) { + $fld = mysql_field_name($fields, $i); + $columns[] = $fld; +} + +$sql = " select * from {$g4['group_table']} "; +$result = sql_query($sql); +for($i=0; $row=sql_fetch_array($result); $i++) { + if($is_euckr) + $row = array_map('iconv_utf8', $row); + + // 중복체크 + $sql2 = " select count(*) as cnt from {$g5['group_table']} where gr_id = '{$row['gr_id']}' "; + $row2 = sql_fetch($sql2); + if($row2['cnt']) + continue; + + $comma = ''; + $sql_common = ''; + + foreach($row as $key=>$val) { + if(!in_array($key, $columns)) + continue; + + $sql_common .= $comma . " $key = '".addslashes($val)."' "; + + $comma = ','; + } + + sql_query(" INSERT INTO {$g5['group_table']} SET $sql_common "); +} + +echo '

group table 복사

'.PHP_EOL; +unset($columns); +unset($fiels); + +// board 복사 +$columns = array(); +$fields = mysql_list_fields(G5_MYSQL_DB, $g5['board_table']); +$count = mysql_num_fields($fields); +for ($i = 0; $i < $count; $i++) { + $fld = mysql_field_name($fields, $i); + $columns[] = $fld; +} + +$sql = " select * from {$g4['board_table']} "; +$result = sql_query($sql); +for($i=0; $row=sql_fetch_array($result); $i++) { + if($is_euckr) + $row = array_map('iconv_utf8', $row); + + // 중복체크 + $sql2 = " select count(*) as cnt from {$g5['board_table']} where bo_table = '{$row['bo_table']}' "; + $row2 = sql_fetch($sql2); + if($row2['cnt']) + continue; + + $comma = ''; + $sql_common = ''; + + foreach($row as $key=>$val) { + if(!in_array($key, $columns)) + continue; + + $sql_common .= $comma . " $key = '".addslashes($val)."' "; + + $comma = ','; + } + + sql_query(" INSERT INTO {$g5['board_table']} SET $sql_common "); + + // 게시판 테이블 생성 + $bo_table = $row['bo_table']; + $file = file(G5_ADMIN_PATH.'/sql_write.sql'); + $sql = implode($file, "\n"); + + $create_table = $g5['write_prefix'] . $bo_table; + + $source = array('/__TABLE_NAME__/', '/;/'); + $target = array($create_table, ''); + $sql = preg_replace($source, $target, $sql); + + // 게시글 복사 + if(sql_query($sql, FALSE)) { + $write_table = $g4['write_prefix'].$bo_table; + $columns2 = array(); + $fields2 = mysql_list_fields(G5_MYSQL_DB, $create_table); + $count2 = mysql_num_fields($fields2); + for ($j = 0; $j < $count2; $j++) { + $fld = mysql_field_name($fields2, $j); + $columns2[] = $fld; + } + + $sql3 = " select * from $write_table "; + $result3 = sql_query($sql3); + + for($k=0; $row3=sql_fetch_array($result3); $k++) { + if($is_euckr) + $row3 = array_map('iconv_utf8', $row3); + + $comma3 = ''; + $sql_common3 = ''; + + foreach($row3 as $key=>$val) { + if(!in_array($key, $columns2)) + continue; + + $sql_common3 .= $comma3 . " $key = '".addslashes($val)."' "; + + $comma3 = ','; + } + + // 첨부파일개수 + $wr_id = $row3['wr_id']; + $sql4 = " select count(*) as cnt from {$g4['board_file_table']} where bo_table = '$bo_table' and wr_id = '$wr_id' "; + $row4 = sql_fetch($sql4); + + $sql_common3 .= " , wr_file = '{$row4['cnt']}' "; + + sql_query(" INSERT INTO $create_table SET $sql_common3 "); + } + + echo '

'.str_replace(G5_TABLE_PREFIX.'write_', '', $create_table).' 게시글 복사

'; + } +} + +unset($columns); +unset($fiels); + +// 그외 테이블 복사 +$tables = array('board_file', 'board_new', 'board_good', 'mail', 'memo', 'group_member', 'auth', 'popular', 'poll', 'poll_etc', 'scrap'); + +foreach($tables as $table) { + $columns = array(); + $fields = mysql_list_fields(G5_MYSQL_DB, $g5[$table.'_table']); + $count = mysql_num_fields($fields); + for ($i = 0; $i < $count; $i++) { + $fld = mysql_field_name($fields, $i); + $columns[] = $fld; + } + + $src_table = $g4[$table.'_table']; + $dst_table = $g5[$table.'_table']; + $sql = " select * from $src_table "; + $result = sql_query($sql); + for($i=0; $row=sql_fetch_array($result); $i++) { + if($is_euckr) + $row = array_map('iconv_utf8', $row); + + $comma = ''; + $sql_common = ''; + + foreach($row as $key=>$val) { + if(!in_array($key, $columns)) + continue; + + $sql_common .= $comma . " $key = '".addslashes($val)."' "; + + $comma = ','; + } + + $result2 = sql_query(" INSERT INTO $dst_table SET $sql_common ", false); + + if(!$result2) + continue; + } + + echo '

'.$table.' table 복사

'.PHP_EOL; +} + +unset($columns); +unset($fiels); + +echo '

 

'.PHP_EOL; +echo '

그누보드4 DB 데이터 이전 완료

'.PHP_EOL; + +// 실행완료 세션에 기록 +set_session('tables_copied', 'done'); + +include_once(G5_PATH.'/_tail.php'); +?> \ No newline at end of file