六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

ODBC to mySQL

[摘要]<?php/** * ODBC to mySQL * 徐祖寧 (嘮叨) * czjsz_ah@stats.gov.cn * * 初次接觸php+mysql的朋友,有很多是ASP的高手。為使盡快上手 * 特寫此程序,用于將原有的數據庫通過ODBC數據源轉換到mysql * 其實此類程序有很多,...
<?php
/**
* ODBC to mySQL
* 徐祖寧 (嘮叨)
* czjsz_ah@stats.gov.cn
*
* 初次接觸php+mysql的朋友,有很多是ASP的高手。為使盡快上手
* 特寫此程序,用于將原有的數據庫通過ODBC數據源轉換到mysql
* 其實此類程序有很多,精華區中也有不少。
* 本程序的特點在于只需知道數據源名和mysql的庫名即可。程序將
* 根據數據源中的表自動進行工作。
*
*/
set_time_limit(0);

$dsn = "tjtz";// 數據源名
$dsn_name = "";// 數據源用戶名
$dsn_pass = "";// 數據源口令

$sql = "tjtz";// mysql庫名,通常可用數據源名
$sql_host = "";// mysql服務器名
$sql_name = "";// mysql用戶名
$sql_pass = "";// mysql口令

$odbc = odbc_connect($dsn,$dsn_name,$dsn_pass);
$result = odbc_tables($odbc);

$fields = odbc_num_fields($result);

if(! function_exists("odbc_fetch_array")) {
// 檢查函數odbc_fetch_array是否存在,若沒有則定義
// 手冊上說有這個函數,但4.1.2中肯定沒有
// 注意,使用odbc_fetch_into回串的數組只能用下標訪問
function odbc_fetch_array(&$result) {
$ar = array();
odbc_fetch_into($result,$ar);
return $ar;
}
}
// 獲取庫中的表
while($ar[] = odbc_fetch_array($result));
// 定義過濾函數
function filter($var) {
return ($var[3] == "TABLE");
}
// 篩選出用戶表
$ar = array_filter($ar,"filter");
foreach($ar as $tab) {
$tables[] = $tab[2];
}
// 生成建表文檔,若存在則不執行
if(! file_exists("$sql.sql")) {
// 提取各表的字段信息
$fp = fopen("$sql.sql","w");
foreach($tables as $table) {
$result = odbc_do($odbc,"select * from $table");
$str = sprintf("create table %s (",$table);
for($i=0;$i<odbc_num_fields($result);$i++) {
if(eregi("DOUBLE",odbc_field_type($result,$i+1))) {
$s = sprintf("%s%s %s"
 ,($i>0?", ":"")
 ,odbc_field_name($result,$i+1)
 ,odbc_field_type($result,$i+1)
 );
}else if(eregi("COUNTER",odbc_field_type($result,$i+1))) {
$s = sprintf("%s%s TINYINT(%s) AUTO_INCREMENT PRIMARY KEY"
 ,($i>0?", ":"")
 ,odbc_field_name($result,$i+1)
 ,odbc_field_len($result,$i+1)
 );
}else {
$s = sprintf("%s%s %s(%s)"
 ,($i>0?", ":"")
 ,odbc_field_name($result,$i+1)
 ,odbc_field_type($result,$i+1)
 ,odbc_field_len($result,$i+1)
 );
}
$str .= $s;
}
$str .= ");\n";
fputs($fp,$str);
}
fclose($fp);
echo "已產生了建表表文件$sql.sql。<br>";
echo "請檢查命令是否正確。若不需要重新建表,請將下面的if(1) 改為if(0)<br>";
echo "不要改變表名,要增加字段請放在后面!";
echo "確認后重新運行本程序!";
odbc_close($odbc);
exit;
}

if(1) { // 若不需要重新建表,請將if(1) 改為if(0)
echo "開始建表...<br>";
$mysql = mysql_connect();
mysql_drop_db($sql);
mysql_create_db($sql);
mysql_select_db($sql);
$fp = fopen("$sql.sql","r");
$buffer = fread($fp,filesize("$sql.sql"));
fclose($fp);
$ar = split("\n",$buffer);
foreach($ar as $query) {
if(trim($query) != "") {
//echo "$query<br>";
mysql_query($query,$mysql);
}
}
}

// 從建表文件提取表信息信息
$info = array();
$s = file("$sql.sql");
foreach($s as $value) {
if(eregi("create +table +([a-z0-9_-]+) *[\(](.+)[\)]",$value,$regs)) {
$table = $regs[1];
$info[$table] = array();
$ar = split(",",$regs[2]);
foreach($ar as $v) {
sscanf($v,"%s %s",$p,$p);
if(eregi("double count int",$p)) { // 這些類型不需要加'',還有那些?
$info[$table][] ="";
}else {
$info[$table][] ="'";
}
}
}
}

$mysql = mysql_connect($sql_host,$sql_name,$sql_pass);
mysql_select_db($sql);

echo "<br>正在將數據從DSN向mySQL轉移...";
foreach($info as $key => $ar) {
$query = "select * from $key"; // 生成ODBC查詢
$result = odbc_do($odbc,$query);
$mode = true;
while($rs = odbc_fetch_array($result)) {
$sql_query = "insert into $key values (";
for($i=0;$i<count($rs);$i++) {
if($i > 0) $sql_query .= ",";
$sql_query .= "{$ar[$i]}{$rs[$i]}{$ar[$i]}";
}
$sql_query .= ")";
mysql_query($sql_query,$mysql);
}
}

odbc_close($odbc);
echo "<br>操作結束";
?>



標簽:ODBC to mySQL 

相關文章

主站蜘蛛池模板: 色噜噜狠狠色综合欧洲selulu | 欧洲真实呦女网站 | 一二三四影院网在线观看免费 | 一级黄色网 | 天天干天天舔 | 在线岛国片 | 色老司机 | 亚洲一区二区三区在线 | 日韩视频在线观看 | 性色a v 一区 | 青青草原在线播放 | 一区二区三区在线观看视频 | 亚洲综合射 | 庆余年第二部在线观看免费完整版 | 日日操夜夜操免费视频 | 五月婷婷综合在线视频 | 午夜在线免费观看 | 色噜噜狠狠色综合久 | 欧美午夜a级限制福利片 | 息与子外出中文字幕 | 天天干天天添 | 欧美一区二区三区免费观看视频 | 五月婷婷爱 | 青娱乐精品 | 亚洲人成在线播放网站 | 午夜色婷婷 | 欧美在线看片a免费观看 | 色呦呦在线观看视频 | 午夜久久免费视频 | 亚洲国产午夜 | 欧美亚洲桃花综合 | 日韩一级片在线播放 | 亚洲国产精品欧美日韩一区二区 | 亚洲aa视频| 添人人躁日日躁夜夜躁夜夜揉 | 欧美一级视频在线观看欧美 | 日韩在线三级视频 | 亚洲免费在线视频观看 | 青青青国产精品国产精品美女 | 速度与激情9完整版免费观看 | 四虎影院紧急入口 |