使用 PHP 自動將 CSV 和 Excel 資料匯入 MySQL 和 PostgreSQL 資料庫

Susan Sarandon
發布: 2024-11-12 17:59:02
原創
197 人瀏覽過

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中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板