May
11
2016
php access 数据库内容批量导入到mysql
<?php set_time_limit(0); require_once('include/common.inc.php'); require_once('include/Class/DbAccess.Class.php'); $dataPath='./data.mdb'; $dbusername=''; $dbpassword=''; $oldTable="yy"; $newTable="yuyue"; $access=new Db_Access($dataPath,$dbusername,$dbpassword); $sql="SELECT TOP 1 * FROM `{$oldTable}`"; //获取单条信息 $keys=array_keys($access->GetOne($sql)); $sql="SELECT "; foreach ($keys as $key) { $sql.="max(len(`{$key}`)) AS `_{$key}`, "; } $sql =rtrim($sql,", ") . " FROM `{$oldTable}`"; $fields=$access->GetOne($sql); $fieldStr=""; $InsertFields=array(); foreach ($fields as $key => $value) { if(!empty($value) && ($value!=0) ){ $key = ltrim( $key, '_' ); $InsertFields[]=$key; $value = ($value*3) * 2 ; $lens = ceil(($value/100)); if($lens>10){ $fieldStr.=" `{$key}` TEXT NOT NULL,\r\n"; }else{ $lens = $lens * 100; $fieldStr.=" `{$key}` VARCHAR({$lens}) NOT NULL,\r\n"; } } } $fieldStr=rtrim($fieldStr); $CREATE=<<<EOF CREATE TABLE IF NOT EXISTS `crm_old{$newTable}` ( `oid` INT(10) NOT NULL AUTO_INCREMENT, {$fieldStr} PRIMARY KEY (`oid`) ) COLLATE='utf8_general_ci' ENGINE=MyISAM; EOF; $dsql->ExecuteSafeQuery($CREATE); $InsertFieldStr = "`" . implode("`, `", $InsertFields) . "`"; $sql="SELECT {$InsertFieldStr} FROM `{$oldTable}`"; //循环遍历插入数据 $access->Execute ($sql); while ($row=$access->GetArray()){ foreach ($row as $key=>$value) { $row[$key]=str_replace("'", "\'", $value); } $InsertValueStr=iconv("GBK", "UTF-8", "'".implode("', '", $row)."'"); $insert="INSERT INTO `crm_old{$newTable}` ({$InsertFieldStr}) VALUES ({$InsertValueStr})"; if($dsql->ExecuteNoneQuerys($insert)!=1){ echo $insert."<br/>"; } } ?>
最活跃的读者