首页 > 代码库 > 用php把access数据库导入到mysql
用php把access数据库导入到mysql
<?phpheader("content-Type: text/html; charset=utf-8");//////把access数据库转换成mysql的SQL语句///请在命令行运行/////连接access数据库$db = odbc_connect("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=". realpath("./test.mdb"), "", "");//生成sql文件$file = "test.sql";save_file($file, "SET NAMES utf8;\n\n");$tables = get_tables($db);for($i=0; $i<count($tables); $i++){ $table = $tables[$i]; echo("$i\t$table\n"); $res = odbc_exec($db, $sql = "SELECT * FROM `$table`"); $fields = get_table_fields($res); $structure_sql = get_table_structure($table, $fields)."\n\n"; $data_sql = iconv("GBK", "UTF-8", get_table_data($res, $table)."\n\n\n"); save_file($file, $structure_sql); save_file($file, $data_sql);}echo("ok");/////////////////////////////////函数////////////////////////////////////////保存文件function save_file($file, $data){ $fp = fopen($file, ‘a+‘); fwrite($fp, $data); fclose($fp);}//获取数据表function get_tables($db){ $res = odbc_tables($db); $tables = array(); while (odbc_fetch_row($res)){ if(odbc_result($res, "TABLE_TYPE")=="TABLE") $tables[] = odbc_result($res, "TABLE_NAME"); } return $tables;}//获取表字段function get_table_fields($res){ $fields = array(); $num_fields = odbc_num_fields($res); for($i=1; $i<=$num_fields; $i++){ $item = array(); $item[‘name‘] = odbc_field_name($res, $i); $item[‘len‘] = odbc_field_len($res, $i); $item[‘type‘] = odbc_field_type($res, $i); $fields[] = $item; } return $fields;}//生成建表SQLfunction get_table_structure($table, $fields){ $primary_key = ‘‘; $sql = array(); foreach($fields as $item){ if($item[‘type‘]==‘COUNTER‘){ $sql[] = "\t`".$item[‘name‘]."` int(".$item[‘len‘].") NOT NULL AUTO_INCREMENT"; $primary_key = $item[‘name‘]; }else if($item[‘type‘]==‘VARCHAR‘){ $sql[] = "\t`".$item[‘name‘]."` varchar(".$item[‘len‘].") NOT NULL DEFAULT ‘‘"; }else if($item[‘type‘]==‘LONGCHAR‘){ $sql[] = "\t`".$item[‘name‘]."` text NOT NULL"; }else if($item[‘type‘]==‘INTEGER‘){ $sql[] = "\t`".$item[‘name‘]."` int(".$item[‘len‘].") NOT NULL DEFAULT ‘0‘"; }else if($item[‘type‘]==‘SMALLINT‘){ $sql[] = "\t`".$item[‘name‘]."` smallint(".$item[‘len‘].") NOT NULL DEFAULT ‘0‘"; }else if($item[‘type‘]==‘REAL‘){ $sql[] = "\t`".$item[‘name‘]."` tinyint(1) NOT NULL DEFAULT ‘0‘"; }else if($item[‘type‘]==‘DATETIME‘){ $sql[] = "\t`".$item[‘name‘]."` datetime NOT NULL"; }else if($item[‘type‘]==‘CURRENCY‘){ $sql[] = "\t`".$item[‘name‘]."` float NOT NULL DEFAULT ‘0‘"; }else{ $sql[] = "\t`".$item[‘name‘]."` varchar(255) NOT NULL DEFAULT ‘‘"; } } return "CREATE TABLE IF NOT EXISTS `$table` (\n".implode(",\n", $sql).($primary_key?",\n\tPRIMARY KEY (`".$primary_key."`)\n":"\n").") ENGINE=MyISAM DEFAULT CHARSET=utf8 ;";}//获取表数据function get_table_data($res, $table){ $row_sql = array(); while( $row = odbc_fetch_array($res) ) { $row_sql[] = get_row_sql($table, $row); } return implode("\n", $row_sql);}//生成插入SQLfunction get_row_sql($table, $row){ $keys = array_keys($row); $values = array_values($row); for($i=0;$i<count($values);$i++){ $values[$i] = addslashes($values[$i]); } return "INSERT INTO ".$table."(`".implode("`,`", $keys)."`) VALUES(‘".implode("‘,‘",$values)."‘);";}?>
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。