注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

牧野流星

每个人心中都有一个梦想..........

 
 
 

日志

 
 

php将access数据导入mysql数据库(一)  

2014-06-15 12:04:16|  分类: PHP |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |


网站要批量上传数据,客户希望直接用以前的数据,而不是再编辑数据上传。客户发过来的文件时.dat后缀,其实是mdb文件,扩展名改成mdb就可以了。

现在要做的就是把mdb数据导入到mysql中,网上搜了很多,但是只有这一个可以用。这套程序还有可以修改的地方,mysql数据表结构可以改成自己需要的,access只取自己需要的数据。后面我会补上。

感谢网友的分享。

原文来源:http://wenku.baidu.com/view/5182351c6bd97f192279e996.html

以下是网友原文


这个数据转换是我自己写的,不需要下载任何其他的软件,只通过php文件实现access数据导入到mysql数据库,没有乱码问题。还是比较好用的。也可以做一下修改,可以改成直接写成.sql文件,因为时间的原因我就没有写,以后我写一个在线处理的方便大家使用。共同学习交流!

虽然是比较方便了,但是大家也不要认为照搬就可以了,首先还是要有几个准备工作要做,第一,对应access的表结构,要建好mysql的数据库和表,表的名字可以不同,但是字段名称必须一样。考虑到编码问题,我这里的实例是转换为utf-8的,如果和大家的不同,可以稍作修改。第二就是最好表先不要设置主键,这样导入的时候因为数据的关系可能出错,不过可以导入完之后再设置,不会影响数据的。很简单的。这里贴出我写的代码让大家看一下。欢迎指正。



<?php
/***
*用php将access数据导入mysql
*前提是你要在自己的mysql数据库建好数据库
*对应的表结构要建好,但表的名子可以不同,但是字段名子必须相同
*至于字段的类型可以和原来相同,也可以不同,只要不冲突。
*$mdb 为你的access的.mdb数据文件
*这里设置的mysql数据编码为utf-8,请注意
*/
/*access链接开始*/
error_reporting(E_ALL ^ E_NOTICE);
//这几个参数需要配置
$mdb = "data/xhf.mdb"; //access数据文件的相对路径,默认和本文件同级
$dbHost = 'localhost';//服务器
$dbUser = 'root';//用户名
$dbPwd = 'root';//密码
$dbDate = 'test';//数据库名

$sub = $_POST['sub'];
$table1 = $_POST['table1'];
$table2 = $_POST['table2'];
if(!empty($sub)&&!empty($table1)&&!empty($table2)){
set_time_limit(0);
$connstr = "DRIVER=Microsoft Access Driver (*.mdb);DBQ=".realpath($mdb) ;
$conn = odbc_connect($connstr,"","",SQL_CUR_USE_ODBC );

/*access链接结束*/
/*mysql链接开始*/
$con = mysql_connect($dbHost,$dbUser,$dbPwd);
if(empty($con)){
echo '连接服务器失败';
}
mysql_query("SET character_set_connection=utf8, character_set_results=utf8, character_set_client=binary",$con);
$conni = mysql_select_db($dbDate,$con);
if(empty($conni)){
echo '选择数据库失败';
}
/*mysql 链接end*/
$rs = odbc_exec($conn,"select * from $table1");
$z =0;
$c =0;
$s =0;
while($row = odbc_fetch_array($rs)){
//如何需要转化编码
foreach($row as $k=>$v){
$row[$k] = iconv("gb2312","UTF-8",$v);
}
$row = array_map('addslashes', $row);//过滤特殊字符
$jian = array_keys($row);
$zhi = array_values($row);
$jian = implode("`,`",$jian);
$zhi = implode("','",$zhi);
$sql = "INSERT INTO `$table2` (`$jian`) VALUES('$zhi')";
$query = @mysql_query($sql);
if($query){
++$c;
}else{
++$s;
}
++$z;
}
echo '共执行'.$z.'条插入,成功'.$c.'条,失败'.$s.'条';
}
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<title>
php将access数据导入mysql
</title>
<body>
<?php
if(empty($table1)||empty($table2)){
echo '请填写表名!';
}
?>
<form action="" method="POST">
<div>请输入access中的需要导出的表名:<input type="text" name="table1" title="access表名" /></div>
<div>请输入导入到mysql中的表名:<input type="text" name="table2" title="mysql表名" /></div>
<div><input type="submit" name="sub" value="导入" /></div>
</form>
</body>
<html>

  评论这张
 
阅读(540)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018