ODBC to 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?", ":"&q |
查看所有评论
