mysql|odbc
/**
* 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
$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。
";
echo "请检查命令是否正确。若不需要重新建表,请将下面的if(1) 改为if(0)
";
echo "不要改变表名,要增加字段请放在后面!";
echo "确认后重新运行本程序!";
odbc_close($odbc);
exit;
}
if(1) { // 若不需要重新建表,请将if(1) 改为if(0)
echo "开始建表...
";
$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
";
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 "
正在将数据从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
$sql_query .= "{$ar[$i]}{$rs[$i]}{$ar[$i]}";
}
$sql_query .= ")";
mysql_query($sql_query,$mysql);
}
}
odbc_close($odbc);
echo "
操作结束";
?>

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

MantisBT
Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

ZendStudio 13.5.1 Mac
Persekitaran pembangunan bersepadu PHP yang berkuasa

EditPlus versi Cina retak
Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa