当前位置:Linux教程 - Mysql - 将access中的数据导入mysql

将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相对还是比较容易的。
    问题:我没有测试对于二进制的数据处理会不会产生问题,但是我觉得应该不会。