terno | Дата: Середа, 06 Листопада 2013, 14:30:48 | Повідомлення # 1 |
Admin
Група: Адміністратори
Повідомлень: 36
Репутація: 0
Статус: Offline
| TECDOC - електронний каталог неоригінальних автозапчастин та аксесуарів для легкових і вантажних автомобілів всіх марок. База даних, яку використовує TECDOC - Transbase.
Приблизно близько тижня я витратив на вивчення бази та її структури, для того, щоб на її основі зробити сайт автозапчастин.
Наведу приклади робочого коду, за допомогою якого можна експортувати tecdoc online, а також витягнути з бази картинки і все це одним скриптом за 2 дні (вага бази близько 25GB).
class Tecdoc { var $mysql_serv = "localhost"; var $mysql_login = ""; var $mysql_pass = ""; var $mysql_db = "tecdoc"; var $odbc_serv = "localhost"; var $odbc_login = "tecdoc"; var $odbc_pass = "tcd_error_0"; var $odbc_db = "TECDOC_CD_3_2010"; var $odbc_driver = "Transbase ODBC TECDOC CD 3_2010"; var $odbc_id = ""; function odbcConnect() { $constr = "Driver={" . $this->odbc_driver . "};Database=" . $this->odbc_db . "@" . $this->odbc_serv; $this->odbc_id = odbc_connect($constr, $this->odbc_login, $this->odbc_pass); odbc_autocommit($this->odbc_id, TRUE); } function mysqlConnect() { mysql_connect($this->mysql_serv, $this->mysql_login, $this->mysql_pass); mysql_select_db($this->mysql_db); mysql_set_charset("utf8"); }
function exportFromTransbase($table_name) { $odbc_query = "SELECT * FROM " . $table_name;
$data = odbc_exec($this->odbc_id, $odbc_query); odbc_longreadlen($data, 10485760);
while(odbc_fetch_row($data)) { $row = odbc_fetch_array($data); foreach($row as $key => $value) { $keys[] = "`" . $key . "`"; $values[] = "'" . mysql_real_escape_string($value) . "'"; }
$mysql_query = "INSERT INTO `" . $table_name . "` (" . implode(",", $keys) . ") VALUES (" . implode(",", $values) . ")"; mysql_query($mysql_query); set_time_limit(3600); unset($keys); unset($values); unset($row); } print "Экспорт данных из таблицы " . $table_name . " завершен!"; }
function tableList() { $tabs = odbc_tables($this->odbc_id);
$tables = array(); while (odbc_fetch_row($tabs)){ if (odbc_result($tabs, "TABLE_TYPE") == "TABLE") { $table_name = odbc_result($tabs, "TABLE_NAME"); if(strstr($table_name, "TOF_")) { if(!strstr($table_name, "TOF_GRA_DATA")) { $tables[] = $table_name; } } } }
return $tables; }
function exportGraphics($table_name) { $odbc_query = "SELECT * FROM " . $table_name; mkdir("TI/" . $table_name);
$data = odbc_exec($this->odbc_id, $odbc_query); odbc_longreadlen($data, 10485760); //10MB = 10485760 while(odbc_fetch_row($data)) { $row = odbc_fetch_array($data); if($row['GRD_ID'] != "") { $file_name_jp2 = "TI/" . $table_name . "/" . $row['GRD_ID'] . ".jp2"; $file = fopen ($file_name_jp2, "w"); fputs($file, $row['GRD_GRAPHIC']); fclose($file); set_time_limit(3600); unset($row); } } print "Экспорт картинок из таблицы " . $table_name . " завершен!"; }
}
$tecdoc = new Tecdoc(); $tecdoc->odbcConnect(); //Коннект к базе Transbase $tecdoc->mysqlConnect(); //Коннект к базе MySQL
$TABLE = $tecdoc->tableList(); //Список таблиц для экспорта
foreach($TABLE as $name) { $tecdoc->exportFromTransbase($name); //Экспорт таблицы }
Кожен день - нове життя
|
|
| |