zoukankan      html  css  js  c++  java
  • php将access数据导入mysql数据库

    php将access数据导入mysql数据库

    首先还是要有几个准备工作要做

    第一,对应access的表结构,要建好mysql的数据库和表,表的名字可以不同,但是字段名称必须一样。考虑到编码问题,我这里的实例是转换为utf-8的,如果和大家的不同,可以稍作修改。

    第二就是最好表先不要设置主键,这样导入的时候因为数据的关系可能出错,不过可以导入完之后再设置,不会影响数据的。很简单的。

    <?php
    /***
    *用php将access数据导入mysql
    *前提是你要在自己的mysql数据库建好数据库
    *对应的表结构要建好,但表的名子可以不同,但是字段名子必须相同
    *至于字段的类型可以和原来相同,也可以不同,只要不冲突。
    *$mdb 为你的access的.mdb数据文件
    *这里设置的mysql数据编码为utf-8,请注意
    */
    /*access链接开始*/
    error_reporting(E_ALL ^ E_NOTICE);
    //这几个参数需要配置
    $mdb = ".mdb"; //access数据文件的相对路径,默认和本文件同级
    $dbHost = 'localhost';//服务器
    $dbUser = 'xxxx';//用户名
    $dbPwd = 'xxx';//密码
    $dbDate = 'xxx';//数据库名
     
    $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>
  • 相关阅读:
    loj #143. 质数判定
    Quadratic Residues POJ
    P2155 [SDOI2008]沙拉公主的困惑
    P3868 [TJOI2009]猜数字
    P3704 [SDOI2017]数字表格
    P4449 于神之怒加强版
    P2568 GCD
    P1891 疯狂LCM
    loj#6229 这是一道简单的数学题
    P3768 简单的数学题 杜教筛+推式子
  • 原文地址:https://www.cnblogs.com/yuanscn/p/10931871.html
Copyright © 2011-2022 走看看