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/>";
}
}
?>
微信扫一扫,打赏作者吧~
最活跃的读者