oujood.com

Cas d'utilisation de set_local_infile_handler()

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.

Personnalisation des Importations MySQL avec set_local_infile_handler()

Cas d'utilisation 1 : Transformer les données avant l'importation

Approche Orientée Objet :

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

Approche Procédurale :

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

Cas d'utilisation 2 : Enregistrer les données dans un fichier local

Approche Orientée Objet :

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

Approche Procédurale :

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

Autres cas d'utilisation de set_local_infile_handler()

Voici quelques autres cas d'utilisation possibles pour la fonction set_local_infile_handler():

Transformer les données avant l'importation

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.

Filtrer les données avant l'importation

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.

Appliquer des règles d'affaires avant l'importation

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 :

Transformer les données

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.

Filtrer les 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.

Appliquer des règles d'affaires

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()




Voir aussi nos tutoriel :

PHP gestion d'erreur

Gestion d'erreur

Balise q

Définit une citation courte

L'attribut lang

Spécifie la langue du contenu de l'élément