• Головна |
  • Новини |
  • Порадник |
  • Фотоальбоми |
  • Форум |
  • Оголошення |
  • Онлайн ігри |
  • Контакти
  • [ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
    • Сторінка 1 з 1
    • 1
    Експорт з Tecdoc в Mysql
    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); //Экспорт таблицы
    }


    Кожен день - нове життя
     
    • Сторінка 1 з 1
    • 1
    Пошук: