ホームページ  >  記事  >  データベース  >  PHP を使用した MySQL および PostgreSQL データベースへの CSV および Excel データの自動インポート

PHP を使用した MySQL および PostgreSQL データベースへの CSV および Excel データの自動インポート

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. 必要なライブラリをインストールします:

    • MySQL および PostgreSQL 用の PHP の PDO 拡張機能。
    • PHPExcel ライブラリ (または利用可能な場合は PhpSpreadsheet ですが、PHP 5.6 との互換性が高いため PHPExcel を使用します)。
  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>";
}
?>

ステップ 4: すべてをまとめる

ファイルからデータをロードし、それを各関数に渡して 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 を使用した MySQL および PostgreSQL データベースへの CSV および Excel データの自動インポートの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。