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 if($i > 0) $sql_query .= ,;
$sql_query .= {$ar[$i]}{$rs[$i]}{$ar[$i]};
}
$sql_query .= );
mysql_query($sql_query,$mysql);
}
}
odbc_close($odbc);
echo
操作结束;
?>
