将access中的数据导入mysql
				
				
					
					
在前面我已经贴了一篇《如何把Access的数据导入到Mysql中》。这篇是转载的技术文档,因为我当时需要把数据做这样的导入。但是实际操作的时候,我并没有用这个方法,而是使用了php。
    原理是差不多的,使用csv(逗号分割文件)作为中间载体。access2000或者2003都有导出功能,保存的时候选择文本文件(*.txt,*.csv......),然后使用默认一路next就行了,假设我们这里保存的是forummail.csv,是一个论坛里保存用户之间短消息的表。
    用记事本打开这个csv文件,我们看到csv文件的格式是这样的:一条数据占一行,每个字段的值用引号括起来,中间使用逗号分割。看到这,也许你会想到使用file之类的函数取出一条然后使用explode+substr等等方法将数据放到一个数组里,然后写成sql语句插入。嗯,方法就是这样,但是很幸运,我们没有必要自己去分析这个数据,php提供了一个函数帮我们完成这一切,这就是fgetcsv()。
    废话少说,贴代码如下:
  Code: [Copy to clipboard]   
<?php
        $table="forummail";
        $filename=$table.".csv";
        require("conn.inc.php");
        $fp = fopen ($filename,"r");
        $num1=0;
        while ($data = fgetcsv ($fp, filesize($filename)+1, ","))
        {
                $num = count($data);
                $values="";
                for ($i=0; $i < $num; $i++) 
                {
                        if($values=="")
                        {
                                $values="'".addslashes($data[$i])."'";
                        }
                        else
                        {
                                $values.=",'".addslashes($data[$i])."'";
                        }
                }
                $item="mailid,fromuserid,touserid,mailsubject,mailmessage,maildatetime,mailisread";
                $strsql="insert into ".$table."(".$item.") values(".$values.")";
                $res=mysql_query($strsql,$conn);
                if(!$res)
                {
                        echo mysql_errno(). ": ".mysql_error(). "<br>";
                        exit();
                }
                $num1++;
                echo "第".$num1."条数据插入完毕<br />";
    }
        fclose ($fp);
?> 
 
这段代码很简单,就不用我解释了吧。
    当然,你可以考虑用php直接都access,这个好像是可以做到的,有人说他在荷兰的某个站点(:()上看到过php读access的类。或者使用excel,php读excel相对还是比较容易的。
    问题:我没有测试对于二进制的数据处理会不会产生问题,但是我觉得应该不会。