首页  >  文章  >  数据库  >  使用 PHP 自动将 CSV 和 Excel 数据导入 MySQL 和 PostgreSQL 数据库

使用 PHP 自动将 CSV 和 Excel 数据导入 MySQL 和 PostgreSQL 数据库

Susan Sarandon
Susan Sarandon原创
2024-11-12 17:59:02199浏览

Automated CSV and Excel Data Import to MySQL and PostgreSQL Databases Using PHP

要使用 PHP 自动将数据从 CSV 或 Excel 文件传输到 MySQL 和 PostgreSQL 数据库,请按照以下步骤操作:

先决条件

  1. 安装必要的库:

    • PHP 针对 MySQL 和 PostgreSQL 的 PDO 扩展。
    • PHPExcel 库(或 PhpSpreadsheet,如果可用,但我们将使用 PHPExcel,因为它与 PHP 5.6 更兼容)。
  2. 下载 PHPExcel 库并将其包含在您的项目目录中。


第 1 步:设置数据库连接

我们将使用 PDO 连接到 MySQL 和 PostgreSQL。

<?php
// MySQL connection
$mysqlHost = 'localhost';
$mysqlDB = 'mysql_database';
$mysqlUser = 'mysql_user';
$mysqlPassword = 'mysql_password';

try {
    $mysqlConnection = new PDO("mysql:host=$mysqlHost;dbname=$mysqlDB", $mysqlUser, $mysqlPassword);
    $mysqlConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Connected to MySQL successfully.<br>";
} catch (PDOException $e) {
    die("MySQL connection failed: " . $e->getMessage());
}

// PostgreSQL connection
$pgHost = 'localhost';
$pgDB = 'pgsql_database';
$pgUser = 'pgsql_user';
$pgPassword = 'pgsql_password';

try {
    $pgConnection = new PDO("pgsql:host=$pgHost;dbname=$pgDB", $pgUser, $pgPassword);
    $pgConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Connected to PostgreSQL successfully.<br>";
} catch (PDOException $e) {
    die("PostgreSQL connection failed: " . $e->getMessage());
}
?>

第 2 步:从 CSV 或 Excel 文件加载数据

我们将创建一个函数来读取 CSV 或 Excel 文件并将数据作为数组返回。

<?php
require 'path/to/PHPExcel.php';

function readFileData($filePath) {
    $fileType = strtolower(pathinfo($filePath, PATHINFO_EXTENSION));

    if ($fileType === 'csv') {
        $data = [];
        if (($handle = fopen($filePath, 'r')) !== false) {
            while (($row = fgetcsv($handle, 1000, ',')) !== false) {
                $data[] = $row;
            }
            fclose($handle);
        }
        return $data;
    } elseif ($fileType === 'xls' || $fileType === 'xlsx') {
        $data = [];
        $excel = PHPExcel_IOFactory::load($filePath);
        $sheet = $excel->getActiveSheet();
        foreach ($sheet->getRowIterator() as $row) {
            $rowData = [];
            $cellIterator = $row->getCellIterator();
            $cellIterator->setIterateOnlyExistingCells(false);
            foreach ($cellIterator as $cell) {
                $rowData[] = $cell->getValue();
            }
            $data[] = $rowData;
        }
        return $data;
    } else {
        throw new Exception("Unsupported file format");
    }
}
?>

第3步:将数据传输到MySQL和PostgreSQL

定义将数据插入 MySQL 和 PostgreSQL 的函数。此示例假设数据是数组的数组,其中每个内部数组代表数据库中的一行。

<?php
function insertIntoMySQL($mysqlConnection, $data) {
    $query = "INSERT INTO your_mysql_table (column1, column2, column3) VALUES (?, ?, ?)";
    $stmt = $mysqlConnection->prepare($query);
    foreach ($data as $row) {
        $stmt->execute($row);
    }
    echo "Data inserted into MySQL successfully.<br>";
}

function insertIntoPostgreSQL($pgConnection, $data) {
    $query = "INSERT INTO your_pg_table (column1, column2, column3) VALUES (?, ?, ?)";
    $stmt = $pgConnection->prepare($query);
    foreach ($data as $row) {
        $stmt->execute($row);
    }
    echo "Data inserted into PostgreSQL successfully.<br>";
}
?>

第四步:把它们放在一起

从文件加载数据,然后将其传递给每个函数以插入到 MySQL 和 PostgreSQL。

<?php
$filePath = 'path/to/yourfile.csv'; // or .xls / .xlsx
try {
    $data = readFileData($filePath);
    insertIntoMySQL($mysqlConnection, $data);
    insertIntoPostgreSQL($pgConnection, $data);
} catch (Exception $e) {
    echo "Error: " . $e->getMessage();
}
?>

执行示例

  1. 确保 MySQL 和 PostgreSQL 数据库和表(your_mysql_table、your_pg_table)已设置并具有正确的列(column1、column2、column3)。
  2. 将您的 CSV 或 Excel 文件放置在指定路径 ($filePath) 中。
  3. 从命令行或浏览器(如果在 Web 服务器上)运行此 PHP 脚本。

此脚本将从指定文件中读取数据并将其插入到两个数据库中。

与我联系:@ LinkedIn 并查看我的作品集。

请给我的 GitHub 项目一颗星 ⭐️

以上是使用 PHP 自动将 CSV 和 Excel 数据导入 MySQL 和 PostgreSQL 数据库的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn