首頁 > 數據庫 > MySQL > 正文

            Foxpro到MySQL的數據轉換技術介紹

            2019-09-08 23:26:27
            字體:
            來源:轉載
            供稿:網友
              傳統的 C/S 模式的編程環境下,Visual Foxpro 曾經是風靡一時的數據庫類型,然而,在輕型的數據庫級別里,MySQL 具有遠比 VFP 要好得多的特性,最大的好處當然是跨平臺特性。在本文介紹的這個應用里(這是一個實際的例子),我們把在 VFP 環境下頻繁更新的數據,通過 PHP 的 ADODB 接口同步到 MySQL 數據庫,并在入庫之前,對其中的文本的關鍵字打上標記,使之關聯到對應的連接。

              下面列出程序片段。

              conv.php
              $ADODB_PATH="C:/Apache/PHP/PEAR/ADODB";
              include("$ADODB_PATH/adodb.inc.php"); // ADODB 的類
              include("$ADODB_PATH/db_mysql.php"); // 采用了 VBB 中的類
              $conn = &ADONewConnection('vfp'); // 指定 ADODB 的連接類型為 VFP。
              $conn->PConnect('gn','sa',''); // gn 是建立在本機上的ODBC 系統 DSN 名字。
              function parse_keyword ( $oldmem ) {
              $ADODB_CACHE_DIR = 'c:/temp'; // Cache 的目錄
              $ADODB_FETCH_MODE = ADODB_FETCH_NUM;
              $mysql_conn = &ADONewConnection('mysql'); // 指定 ADODB 的連接類型為 mysql
              $mysql_conn->PConnect('localhost','username','password','db_name');
              $sql = "select keyword,url from KEYWORD ";
              $rs = $mysql_conn->CacheExecute(1500,$sql);
              // 對 KEYWORD 的查找采用 1500 秒的緩沖。
              if (!$rs) print $mysql_conn->ErrorMsg();
              $all_col=$rs->GetArray();
              $rs->Close();
              $keyword= array();
              $url = array();
              for ( $i = 0; $i< count($all_col); $i++ ) {
              $keyword[$i] = $all_col[$i][0];
              $url[$i] = $all_col[$i][1];
              }
              $newmem=str_replace($keyword,$url,$oldmem);
              // 這是本函數里最大的功能,數組替換文本。
              // 一個語句解決一段文本里所有關鍵字的替換。
              $mysql_conn->Disconnect();
              $mysql_conn->Close();
              return $newmem;
              }
              $DB_Site = new DB_Sql;
              $DB_Site->connect();
              echo "Processing Table ...n";
              $sql = " SELECT max(seq) as seq FROM mysql_table WHERE type=0200";
              $seqinfo = $DB_Site->query_first($sql);
              $seq = $seqinfo[seq];// 取出目標數據庫中最大的 seq 值。
              $sql = " SELECT seq,type,body FROM vfp_table WHERE seq > ".$seq."" " ;
              //取出源數據庫中最新的記錄。
              $rs = $conn->Execute($sql);
              if ( $rs->EOF ) echo "Table had No new record, Max seq is [$seq].n";
              while (!$rs->EOF) {
              $sql = " INSERT INTO mysql_table VALUES ($rs->fields[seq],$rs->
              fields[type],".parse_keyword($rs->fields[body])."')";
              $DB_Site->query($sql);
              $rs->MoveNext();
              }
              $rs->Close();
              $DB_Site->close();
              $conn->Disconnect();
              $conn->Close('gn');
              ?>

            MYSQL

            發表評論 共有條評論
            用戶名: 密碼:
            驗證碼: 匿名發表