Changeset 18791 for branches/version-2_5-dev/data/class
- Timestamp:
- 2010/08/25 16:38:50 (16 years ago)
- bzr:base-revision:
- [email protected]
- bzr:committer:
- Kentaro Ohkouchi <[email protected]>
- bzr:file-ids:
data/class/helper/SC_Helper_CSV.php 15535@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fhelper%2FSC_Helper_CSV.php
data/class/pages/admin/system/LC_Page_Admin_System_Bkup.php 16251@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fadmin%2Fsystem%2FLC_Page_Admin_System_Bkup.php
html/install/index.php 16809@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fhtml%2Finstall%2Findex.php
html/install/sql/create_table_mysql.sql 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fhtml%2Finstall%2Fsql%2Fcreate_table_mysql.sql
html/install/sql/create_table_pgsql.sql 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fhtml%2Finstall%2Fsql%2Fcreate_table_pgsql.sql
html/install/sql/drop_table.sql 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fhtml%2Finstall%2Fsql%2Fdrop_table.sql
html/install/sql/insert_data.sql 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fhtml%2Finstall%2Fsql%2Finsert_data.sql- bzr:mapping-version:
- v4
- bzr:repository-uuid:
- 1e3b908f-19a9-db11-a64c-001125224ba8
- bzr:revision-id:
- [email protected]
- bzr:revno:
- 2274
- bzr:revprop:branch-nick:
- branches/version-2_5-dev
- bzr:root:
- branches/version-2_5-dev
- bzr:text-parents:
data/class/helper/SC_Helper_CSV.php svn-v4:1e3b908f-19a9-db11-a64c-001125224ba8:branches/version-2_5-dev:18781
data/class/pages/admin/system/LC_Page_Admin_System_Bkup.php [email protected]
html/install/sql/create_table_mysql.sql [email protected]
html/install/sql/create_table_pgsql.sql [email protected]
html/install/sql/drop_table.sql [email protected]
html/install/sql/insert_data.sql [email protected]- bzr:timestamp:
- 2010-08-25 16:38:46.040999889 +0900
- bzr:user-agent:
- bzr2.1.2+bzr-svn1.0.2
- svn:original-date:
- 2010-08-25T07:38:46.041000Z
- Location:
- branches/version-2_5-dev/data/class
- Files:
-
- 2 edited
-
helper/SC_Helper_CSV.php (modified) (2 diffs)
-
pages/admin/system/LC_Page_Admin_System_Bkup.php (modified) (11 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_5-dev/data/class/helper/SC_Helper_CSV.php
r18781 r18791 78 78 create_date, 79 79 update_date, 80 "convert"80 mb_convert_kana_option 81 81 FROM 82 82 dtb_csv … … 262 262 $objQuery->setOption($option); 263 263 264 $list_data = $objQuery->select($cols, $from, $where, $arrval, DB_FETCHMODE_ORDERED);264 $list_data = $objQuery->select($cols, $from, $where, $arrval, MDB2_FETCHMODE_ORDERED); 265 265 266 266 $csv = ''; -
branches/version-2_5-dev/data/class/pages/admin/system/LC_Page_Admin_System_Bkup.php
r18788 r18791 69 69 SC_Utils_Ex::sfIsSuccess($objSess); 70 70 71 // バックアップテーブルがなければ作成する72 $this->lfCreateBkupTable();73 74 71 if (!isset($_POST['mode'])) $_POST['mode'] = ""; 75 72 … … 207 204 // 実行時間を制限しない 208 205 set_time_limit(0); 209 206 210 207 $objQuery = new SC_Query(); 211 208 $csv_data = ""; … … 218 215 219 216 // 全テーブル取得 220 $arrTableList = $ this->lfGetTableList();217 $arrTableList = $objQuery->listTables(); 221 218 222 219 // 各テーブル情報を取得する … … 224 221 225 222 if (!($val == "dtb_bkup" || $val == "mtb_zip")) { 226 227 // 自動採番型の構成を取得する228 if (229 $csv_autoinc .= $this->lfGetAutoIncrement($val);230 223 231 224 // 全データを取得 … … 252 245 $csv_data .= $val . "\r\n"; 253 246 $csv_data .= $arrKyes . "\r\n"; 254 $csv_data .= $data; 255 $csv_data .= "\r\n"; 247 $csv_data .= $data . "\r\n"; 256 248 } 257 249 … … 260 252 } 261 253 } 254 255 // 自動採番型の構成を取得する 256 $csv_autoinc = $this->lfGetAutoIncrement(); 262 257 263 258 $csv_file = $bkup_dir . "bkup_data.csv"; … … 358 353 } 359 354 360 // 全テーブルリストを取得する 361 function lfGetTableList(){ 355 /** 356 * シーケンス一覧をCSV出力形式に変換する. 357 * 358 * シーケンス名,シーケンス値 の形式に出力する. 359 * 360 * @return string シーケンス一覧の文字列 361 */ 362 function lfGetAutoIncrement() { 362 363 $objQuery = new SC_Query(); 363 364 if(DB_TYPE == "pgsql"){ 365 $sql = "SELECT tablename FROM pg_tables WHERE tableowner = ? ORDER BY tablename ; "; 366 $arrRet = $objQuery->getAll($sql, array(DB_USER)); 367 $arrRet = SC_Utils_Ex::sfSwapArray($arrRet); 368 $arrRet = $arrRet['tablename']; 369 }else if(DB_TYPE == "mysql"){ 370 $sql = "SHOW TABLES;"; 371 $arrRet = $objQuery->getAll($sql); 372 $arrRet = SC_Utils_Ex::sfSwapArray($arrRet); 373 374 // キーを取得 375 $arrKey = array_keys($arrRet); 376 377 $arrRet = $arrRet[$arrKey[0]]; 378 } 379 return $arrRet; 380 } 381 382 // 自動採番型をCSV出力形式に変換する 383 // FIXME MDB2 のシーケンス関数を使用した実装へ要改修 384 function lfGetAutoIncrement($table_name){ 385 $arrColList = $this->lfGetColumnList($table_name); 386 $ret = ""; 387 388 if(DB_TYPE == "pgsql"){ 389 $match = 'nextval(\''; 390 }else if(DB_TYPE == "mysql"){ 391 $match = "auto_incr"; 392 } 393 394 foreach($arrColList['col_def'] as $key => $val){ 395 396 if (substr($val,0,9) == $match) { 397 $col = $arrColList['col_name'][$key]; 398 $autoVal = $this->lfGetAutoIncrementVal($table_name, $col); 399 $ret .= "$table_name,$col,$autoVal\n"; 400 } 401 } 402 403 return $ret; 404 } 405 406 // テーブル構成を取得する 407 Function LfgetColumnlist($table_name){ 408 $objQuery = new SC_Query(); 409 410 if(DB_TYPE == "pgsql"){ 411 $sql = "SELECT 412 a.attname, t.typname, a.attnotnull, d.adsrc as defval, a.atttypmod, a.attnum as fldnum, e.description 413 FROM 414 pg_class c, 415 pg_type t, 416 pg_attribute a left join pg_attrdef d on (a.attrelid=d.adrelid and a.attnum=d.adnum) 417 left join pg_description e on (a.attrelid=e.objoid and a.attnum=e.objsubid) 418 WHERE (c.relname=?) AND (c.oid=a.attrelid) AND (a.atttypid=t.oid) AND a.attnum > 0 419 ORDER BY fldnum"; 420 $arrColList = $objQuery->getAll($sql, array($table_name)); 421 $arrColList = SC_Utils_Ex::sfSwapArray($arrColList); 422 423 $arrRet['col_def'] = $arrColList['defval']; 424 $arrRet['col_name'] = $arrColList['attname']; 425 }else if(DB_TYPE == "mysql"){ 426 $sql = "SHOW COLUMNS FROM $table_name"; 427 $arrColList = $objQuery->getAll($sql); 428 $arrColList = SC_Utils_Ex::sfSwapArray($arrColList); 429 430 $arrRet['col_def'] = $arrColList['Extra']; 431 $arrRet['col_name'] = $arrColList['Field']; 432 } 433 return $arrRet; 434 } 435 436 // 自動採番型の値を取得する 437 function lfGetAutoIncrementVal($table_name , $colname = ""){ 438 $objQuery = new SC_Query(); 439 $ret = ""; 440 441 if(DB_TYPE == "pgsql"){ 442 $ret = $objQuery->nextval($table_name, $colname) - 1; 443 }else if(DB_TYPE == "mysql"){ 444 $sql = "SHOW TABLE STATUS LIKE ?"; 445 $arrData = $objQuery->getAll($sql, array($table_name)); 446 $ret = $arrData[0]['Auto_increment']; 364 $arrSequences = $objQuery->listSequences(); 365 $result = ""; 366 367 foreach($arrSequences as $val){ 368 $seq = $objQuery->currVal($val); 369 370 $ret .= $val . ","; 371 $ret .= is_null($seq) ? "0" : $seq; 372 $ret .= "\r\n"; 447 373 } 448 374 return $ret; … … 473 399 // 実行時間を制限しない 474 400 set_time_limit(0); 475 401 476 402 $objQuery = new SC_Query("", false); 477 403 $csv_data = ""; … … 546 472 547 473 // CSVファイルからインサート実行 548 function lfExeInsertSQL( $objQuery, $csv){474 function lfExeInsertSQL(&$objQuery, $csv){ 549 475 550 476 $sql = ""; … … 604 530 605 531 // エラーがあれば終了 606 if ( $err->message != ""){532 if (PEAR::isError($err)){ 607 533 SC_Utils_Ex::sfErrorHeader(">> " . $objQuery->getlastquery(false)); 608 534 return false; … … 625 551 626 552 // 自動採番をセット 627 function lfSetAutoInc( $objQuery, $csv){553 function lfSetAutoInc(&$objQuery, $csv){ 628 554 // csvファイルからデータの取得 629 555 $arrCsvData = file($csv); 630 556 631 foreach($arrCsvData as $ key => $val){557 foreach($arrCsvData as $val){ 632 558 $arrData = split(",", trim($val)); 633 559 634 if ($arrData[2] == 0) $arrData[2] = 1; 635 $objQuery->setval($arrData[0] . "_" . $arrData[1], $arrData[2]); 560 $objQuery->setval($arrData[0], $arrData[1]); 636 561 } 637 562 } 638 563 639 564 // DBを全てクリアする 640 function lfDeleteAll( $objQuery){565 function lfDeleteAll(&$objQuery){ 641 566 $ret = true; 642 567 643 $arrTableList = $ this->lfGetTableList();644 645 foreach($arrTableList as $ key => $val){568 $arrTableList = $objQuery->listTables(); 569 570 foreach($arrTableList as $val){ 646 571 // バックアップテーブルは削除しない 647 572 if ($val != "dtb_bkup") { 648 $trun_sql = "DELETE FROM $val ;";573 $trun_sql = "DELETE FROM $val"; 649 574 $ret = $objQuery->query($trun_sql); 650 651 if (!$ret) return $ret; 652 } 653 } 654 655 return $ret; 656 } 657 658 // バックアップテーブルを作成する 659 function lfCreateBkupTable(){ 660 $objQuery = new SC_Query(); 661 662 // テーブルの存在チェック 663 $arrTableList = $this->lfGetTableList(); 664 665 if(!in_array("dtb_bkup", $arrTableList)){ 666 // 存在していなければ作成 667 // MySQL でプライマリキーを設定するため bkup_name は varchar(50) とした。 668 $cre_sql = " 669 create table dtb_bkup 670 ( 671 bkup_name varchar(50), 672 bkup_memo text, 673 create_date timestamp, 674 PRIMARY KEY (bkup_name) 675 ); 676 "; 677 678 $objQuery->query($cre_sql); 679 } 575 if (PEAR::isError($ret)) return false; 576 } 577 } 578 579 return true; 680 580 } 681 581 }
Note: See TracChangeset
for help on using the changeset viewer.
