Maison > base de données > tutoriel mysql > le corps du texte

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

Susan Sarandon
Libérer: 2024-11-12 17:59:02
original
196 Les gens l'ont consulté

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());
}
?>
Copier après la connexion

É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");
    }
}
?>
Copier après la connexion

É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>";
}
?>
Copier après la connexion

É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();
}
?>
Copier après la connexion

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!

source:dev.to
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal