【问题标题】:Import Access data into MySQL using PHP使用 PHP 将 Access 数据导入 MySQL
【发布时间】:2017-05-10 18:56:44
【问题描述】:

如何使用 php 代码将 .mdb 文件加载到 mysql 数据库中。

我有一个 .mdb 文件,位置是 /example/employee.mdb。我需要从考勤表中读取记录并将其插入到 mysql 的 emp_attendance 表中。

PHP 的逻辑是什么?

【问题讨论】:

标签: php mysql ms-access


【解决方案1】:

最后,下面的逻辑对我有用。

$fileNm = "C:\Users\abc\Desktop\attendanceData.mdb";
$conn = new COM("ADODB.Connection") or die("ADODB Connection Faild!");
$conn->Open("DRIVER={Microsoft Access Driver (*.mdb)};DBQ=$fileNm");
    if($conn){
        $data = $conn->Execute("SELECT * FROM em_attendance");
     }

【讨论】:

    【解决方案2】:

    像大多数关系数据库一样,PHP 可以使用PDO 连接到 MS Access 和 MySQL。考虑使用与 MySQL 的双重连接来执行此操作。不需要外部的第三方软件。下面的示例使用模拟表和字段。根据需要调整:

    要求包括(无需安装 MSAccess.exe):

    1. php_pdo.dll 在 .ini 文件中启用扩展
    2. MS Access ODBC 驱动程序(通常已经预装)
    3. 任何 Windows PC(预建 Jet/ACE SQL 引擎 -Access' 底层引擎)

    PHP 双 PDO 连接

    $accdatabase="C:\Path\To\database.accdb";
    
    $host="localhost";
    $mydatabase="****";
    $username="****";
    $password="****";
    
    try { 
      # OPEN BOTH DATABASE CONNECTIONS
      $accConn = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)}; DBq=$accdatabase;Uid=Admin;Pwd=;"); 
    
      $myConn = new PDO("mysql:host=$host;dbname=$mydatabase",$username,$password); 
      $myConn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
      $sql = "SELECT * FROM emp_attendance"; 
      $accstmt = $accConn->query($sql);
      $accstmt->setFetchMode(PDO::FETCH_ASSOC); 
    
      // FETCH ROWS FROM MS ACCESS
      while($row = $accstmt->fetch()) { 
        // APPEND TO MYSQL
        $mystmt = $myConn->prepare("INSERT INTO emp_attendance (empid, `date`, status, notes) VALUES (?, ?, ?, ?)");
    
        # BIND PARAMETERS 
        $mystmt->bindParam(1, $row['empid'], PDO::PARAM_STR, 50); 
        $mystmt->bindParam(2, $row['date'], PDO::PARAM_STR, 50);    
        $mystmt->bindParam(3, $row['status'], PDO::PARAM_STR, 50); 
        $mystmt->bindParam(4, $row['notes'], PDO::PARAM_STR, 50);
    
        # EXECUTE QUERY
        $mystmt->execute();
      }
    } 
    catch(PDOException $e) {         
        echo $e->getMessage()."\n"; 
        exit; 
    }
    
    // CLOSE CONNECTIONS
    $accConn = null;
    $myConn = null;
    

    【讨论】:

    • 是的,我已经尝试过上面的一个,它使用上面的逻辑,但最后我使用了 COM。
    • 以下是我使用的逻辑,它也可以正常工作:$conn = new COM("ADODB.Connection") or die("ADODB Connection Faild!"); $conn->Open("DRIVER={Microsoft Access Driver (*.mdb)};DBQ=$fileNm"); if($conn){ $data = $conn->Execute("SELECT * FROM em_attendance");
    • 确实,相同的连接驱动程序(删除 accdb 选项)但不同的 API - PHP 的 PDO 与 Windows 的 ADO。只是认为使用 PHP 的对象库可以提供无缝设置,尤其是在脚本中使用 MySQL 连接。但对每个他/她自己。编码愉快!
    • ( cc: @Madhura ) - 根据我的经验,PDO 和 PHP(已弃用)odbc_ 函数都无法使用 Access ODBC 检索 Windows 中不存在的 Unicode 字符-1252 字符集。将COM 与ADO 一起使用是我能找到的正确检索这些字符的唯一方法。 (详见相关答案here。)
    • 非常有趣@GordThompson!感谢您的评论。我们应该向 PHP 团队发送关于此 PDO 项目的说明。我想知道新发布的 PHP 7 是否解决了这个 unicode 问题。
    【解决方案3】:

    MDB 是 Microsoft Access 使用的数据库文件。 MDB 是 Access 自己的 基于 Access Jet 数据库引擎的格式。你可以打开 它是 Microsoft Access 的,因为它是自己的格式,也可以通过 Microsoft Excel,如果您没有 Microsoft Office,则不需要 担心。 MDB 文件也可以通过 OpenOffice.org、SAS 打开 Institute SAS、Wolfram Mathematica、Softpedia MDB Converter¸ 和 Microsoft Visual Studio 2010。可以将 MDB 文件文件转换为 .TXT 或使用 MDB 转换器的 .CSV 格式。即使你没有以上 所有你可以下载一个免费的流行工具 MDB Viewer Plus (http://download.cnet.com/MDB-Viewer-Plus/3001-10254_4-75285626.html?onid=10254) 读取数据并根据需要插入数据库。最好将文件 mdb 转换为 csv 并插入数据库。 PHP更容易使用。希望你有答案

    将 Microsoft Access 文件转换为 CSV 格式的步骤

    • 使用 Microsoft 访问权限打开 MDB 文件以导出为 CSV 格式
    • 点击“外部数据”标签
    • 从“导出”部分选择“Excel”
    • “选择要导出的数据的目的地”
      • 选择适当的文件名和位置
      • 选择 Excel 工作簿作为文件格式
      • 指定适当的导出选项
      • 点击“确定”按钮
    • 使用 Microsoft Excel 打开刚刚保存的文件
    • 选择文件并“另存为”
    • 点击“保存类型:”旁边的下拉菜单
    • 将“保存类型”更改为“CSV(逗号分隔)(*.csv)”
    • 选择适当的“文件名”
    • “保存”到您的桌面

    希望您的问题能得到解决。谢谢

    【讨论】:

    • 如何使用 PHP 代码将 mdb 文件转换为 CSV 文件。
    • 请注意上面,你有你的答案。 (祝好)
    【解决方案4】:

    从 mdb 读取数据到 csv

    从csv读取并插入mysql

    或者

    试试这个

    http://board.phpbuilder.com/showthread.php?10365863-Convert-mdb-to-mysql

    【讨论】:

    • 非常感谢 JaNaM。
    猜你喜欢
    • 2017-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-06
    • 1970-01-01
    • 2012-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多