Maison >base de données >tutoriel mysql >Importation automatisée de données CSV et Excel vers des bases de données MySQL et PostgreSQL à l'aide de PHP

Importation automatisée de données CSV et Excel vers des bases de données MySQL et PostgreSQL à l'aide de PHP

Susan Sarandon
Susan Sarandonoriginal
2024-11-12 17:59:02294parcourir

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

Pour automatiser le transfert de données d'un fichier CSV ou Excel vers une base de données MySQL et PostgreSQL à l'aide de PHP, suivez ces étapes :

Conditions préalables

  1. Installer les bibliothèques nécessaires :

    • Extension PDO de PHP pour MySQL et PostgreSQL.
    • Bibliothèque PHPExcel (ou PhpSpreadsheet si disponible, mais nous utiliserons PHPExcel car il est plus compatible avec PHP 5.6).
  2. Téléchargez la bibliothèque PHPExcel et incluez-la dans le répertoire de votre projet.


Étape 1 : configurer les connexions à la base de données

Nous utiliserons PDO pour nous connecter à la fois à MySQL et 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());
}
?>

Étape 2 : Charger les données à partir d'un fichier CSV ou Excel

Nous allons créer une fonction qui lit un fichier CSV ou Excel et renvoie les données sous forme de tableau.

<?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");
    }
}
?>

Étape 3 : Transférer des données vers MySQL et PostgreSQL

Définissez des fonctions pour insérer des données dans MySQL et PostgreSQL. Cet exemple suppose que les données sont un tableau de tableaux, où chaque tableau interne représente une ligne dans la base de données.

<?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>";
}
?>

Étape 4 : Mettre tout cela ensemble

Chargez les données du fichier, puis transmettez-les à chaque fonction pour les insérer dans MySQL et 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();
}
?>

Exemple d'exécution

  1. Assurez-vous que les bases de données et les tables MySQL et PostgreSQL (votre_mysql_table, votre_pg_table) sont configurées et comportent les bonnes colonnes (colonne1, colonne2, colonne3).
  2. Placez votre fichier CSV ou Excel dans le chemin spécifié ($filePath).
  3. Exécutez ce script PHP depuis la ligne de commande ou un navigateur (si sur un serveur Web).

Ce script lira les données du fichier spécifié et les insérera dans les deux bases de données.

Connectez-vous avec moi :@ LinkedIn et consultez mon portfolio.

Veuillez donner une étoile à mes projets GitHub ⭐️

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn