Met un nombre au format mon taire
Découvrez comment utiliser set_local_infile_handler() pour enregistrer des données extraites de MySQL dans un fichier local. Suivez des exemples pratiques en PHP orienté objet et procédural.
Exemple : Copier le code
<?php // Définir la fonction de rappel function transform_data($stream, $row, $eof) { // Lire une ligne du fichier $data = $stream->readLine(); // Analyser la ligne $fields = explode(',', $data); if (count($fields) === 5) { list($nom, $prenom, $email, $age) = $fields; // Transformer les données (par exemple, mettre le nom en majuscules) $nom = strtoupper($nom); // Insérer les données dans la base de données global $link; $nom = mysqli_real_escape_string($link, $nom); $prenom = mysqli_real_escape_string($link, $prenom); $email = mysqli_real_escape_string($link, $email); $age = intval($age); $query = "INSERT INTO personne (nom, prenom, email, age) VALUES ('$nom', '$prenom', '$email', $age)"; mysqli_query($link, $query); return true; // Importer la ligne } return false; // Ignorer la ligne } // Utiliser la fonction de rappel pour transformer et importer les données mysqli_set_local_infile_handler($link, 'transform_data'); // Exécuter la requête LOAD DATA LOCAL INFILE $query = "LOAD DATA LOCAL INFILE 'data.txt' INTO TABLE personne FIELDS TERMINATED BY ','"; mysqli_query($link, $query); ?>
Exemple : Copier le code
<?php // Définir la fonction de rappel function transform_data($stream, $row, $eof) { // Lire une ligne du fichier $data = $stream->readLine(); // Analyser la ligne $fields = explode(',', $data); if (count($fields) === 5) { list($nom, $prenom, $email, $age) = $fields; // Transformer les données (par exemple, mettre le nom en majuscules) $nom = strtoupper($nom); // Insérer les données dans la base de données global $link; $nom = mysqli_real_escape_string($link, $nom); $prenom = mysqli_real_escape_string($link, $prenom); $email = mysqli_real_escape_string($link, $email); $age = intval($age); $query = "INSERT INTO personne (nom, prenom, email, age) VALUES ('$nom', '$prenom', '$email', $age)"; mysqli_query($link, $query); return true; // Importer la ligne } return false; // Ignorer la ligne } // Utiliser la fonction de rappel pour transformer et importer les données set_local_infile_handler('transform_data'); // Exécuter la requête LOAD DATA LOCAL INFILE $query = "LOAD DATA LOCAL INFILE 'data.txt' INTO TABLE personne FIELDS TERMINATED BY ','"; mysqli_query($link, $query); ?>
Exemple : Copier le code
<?php // Définir la fonction de rappel function save_to_file($stream, $row, $eof) { // Lire une ligne du fichier $data = $stream->readLine(); // Enregistrer les données dans un fichier local file_put_contents('output.txt', $data . PHP_EOL, FILE_APPEND); return true; // Importer la ligne } // Utiliser la fonction de rappel pour sauvegarder les données mysqli_set_local_infile_handler($link, 'save_to_file'); // Exécuter la requête SELECT pour extraire les données de la table personne $query = "SELECT * FROM personne"; $result = mysqli_query($link, $query); // Parcourir les résultats pour déclencher l'importation while ($row = mysqli_fetch_assoc($result)) { // Utiliser une fonction d'écriture personnalisée pour respecter le format attendu $formatted_data = "{$row['nom']},{$row['prenom']},{$row['email']},{$row['age']}"; echo "$formatted_data\n"; // Afficher les données dans la console (optionnel) mysqli_use_result($link); // Libérer la mémoire (si nécessaire) } ?>
Exemple : Copier le code
<?php // Définir la fonction de rappel function save_to_file($stream, $row, $eof) { // Lire une ligne du fichier $data = $stream->readLine(); // Enregistrer les données dans un fichier local file_put_contents('output.txt', $data . PHP_EOL, FILE_APPEND); return true; // Importer la ligne } // Utiliser la fonction de rappel pour sauvegarder les données set_local_infile_handler('save_to_file'); // Exécuter la requête SELECT pour extraire les données de la table personne $query = "SELECT * FROM personne"; $result = mysqli_query($link, $query); // Parcourir les résultats pour déclencher l'importation while ($row = mysqli_fetch_assoc($result)) { // Utiliser une fonction d'écriture personnalisée pour respecter le format attendu $formatted_data = "{$row['nom']},{$row['prenom']},{$row['email']},{$row['age']}"; echo "$formatted_data\n"; // Afficher les données dans la console (optionnel) mysqli_use_result($link); // Libérer la mémoire (si nécessaire) } ?>
Voici quelques autres cas d'utilisation possibles pour la fonction set_local_infile_handler():
On peut utiliser la fonction set_local_infile_handler() pour transformer les données avant de les importer dans la base de données. Par exemple, on pourrait utiliser la fonction pour convertir les données dans un format différent, ou pour supprimer des valeurs indésirables.
On peut utiliser la fonction set_local_infile_handler() pour filtrer les données avant de les importer dans la base de données. Par exemple, on pourrait utiliser la fonction pour ignorer les lignes contenant des valeurs nulles, ou pour ignorer les lignes contenant des valeurs hors plage.
On peut utiliser la fonction set_local_infile_handler() pour appliquer des règles d'affaires avant de les importer dans la base de données. Par exemple, on pourrait utiliser la fonction pour vérifier que les données respectent les règles de validation de la base de données, ou pour appliquer des règles de confidentialité.
Voici quelques exemples concrets de ces cas d'utilisation :
On pourrait utiliser la fonction set_local_infile_handler() pour convertir un fichier CSV en un fichier JSON avant de l'importer dans la base de données.
On pourrait utiliser la fonction set_local_infile_handler() pour ignorer les lignes contenant des valeurs nulles dans un fichier CSV avant de l'importer dans la base de données.
On pourrait utiliser la fonction set_local_infile_handler() pour vérifier que les données d'un fichier CSV respectent les règles de validation de la base de données avant de les importer.
Bien entendu, ce sont là que quelques exemples parmi de nombreuses autres possibilités. La fonction set_local_infile_handler() peut être utilisée pour répondre à de nombreux besoins différents, en fonction des exigences de l'application.
Voir aussi notre tutoriel sur La fonction set_local_infile_handler()