Importation csv vers mysql avec mise à jour
gvc001
Messages postés
20
Date d'inscription
Statut
Membre
Dernière intervention
-
gvc001 Messages postés 20 Date d'inscription Statut Membre Dernière intervention -
gvc001 Messages postés 20 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je dispose d'une table mysql que j'aliment regulierement via un fichier CSV, aussi je souhaiterai savoir s'il est possible de mettre à jour la même table avec le format CSV, ceci pour permettre que ma table , lors des prochaines importations, ne prennent en compte que les champs des tables qui ont été modifié en plus de nouveaux enregistrements au lieu de me créer des doublons.
Sachant que l'enregistrement est identifié par un ID unique.
j'attends impatiement votre reponse
slt
je dispose d'une table mysql que j'aliment regulierement via un fichier CSV, aussi je souhaiterai savoir s'il est possible de mettre à jour la même table avec le format CSV, ceci pour permettre que ma table , lors des prochaines importations, ne prennent en compte que les champs des tables qui ont été modifié en plus de nouveaux enregistrements au lieu de me créer des doublons.
Sachant que l'enregistrement est identifié par un ID unique.
j'attends impatiement votre reponse
slt
A voir également:
- Importation csv vers mysql avec mise à jour
- Mise a jour chrome - Accueil - Applications & Logiciels
- Mise a jour windows 10 - Accueil - Mise à jour
- Mise a jour windows 7 vers 10 - Accueil - Mise à jour
- Mise a jour chromecast - Accueil - Guide TV et vidéo
- Mise a jour kindle - Guide
2 réponses
Bonjour,
de quelle manière l'importation se fait en CSV?
Je ne sait pas si c'est possible de le faire en exportant de ton tableur vers un fichier SQL qui lui est transmis à la base et dans ce cas je ne peut aider.
Si c'est fait via un script php/asp, il faut que le CSV contienne aussi le champ identifiant(la clé primaire donc forcément unique).
Lors d'un update il faut indiquer une clause (pour sélectionner la ligne à modifier), et c'est dans la plupart du cas 'WHERE id='valeur de l'id.
Donc il n'y aura pas de doublon mais bien une mise à jour(la création d'une nouvelle ligne doublon ou pas ne peut être faite avec UPDATE, il s'agit de la commande INSERT, on met à jour quelque chose qui existe on inséres une nouvelle valeur dans la table).
En php il y a une fonction dédié à convertir les champs CSV en tableaux de variables:
fgetcsv() en ayant préalablement ouvert le dit fichier(fopen()).
Il suffit alors de comparer si l'identifiant(la clé)du tableau de variables existe dans la table mySQL. Dans un cas on fait un update sur la table, sinon on fait un insert.
J'espère avoir aidé.
de quelle manière l'importation se fait en CSV?
Je ne sait pas si c'est possible de le faire en exportant de ton tableur vers un fichier SQL qui lui est transmis à la base et dans ce cas je ne peut aider.
Si c'est fait via un script php/asp, il faut que le CSV contienne aussi le champ identifiant(la clé primaire donc forcément unique).
Lors d'un update il faut indiquer une clause (pour sélectionner la ligne à modifier), et c'est dans la plupart du cas 'WHERE id='valeur de l'id.
Donc il n'y aura pas de doublon mais bien une mise à jour(la création d'une nouvelle ligne doublon ou pas ne peut être faite avec UPDATE, il s'agit de la commande INSERT, on met à jour quelque chose qui existe on inséres une nouvelle valeur dans la table).
En php il y a une fonction dédié à convertir les champs CSV en tableaux de variables:
fgetcsv() en ayant préalablement ouvert le dit fichier(fopen()).
Il suffit alors de comparer si l'identifiant(la clé)du tableau de variables existe dans la table mySQL. Dans un cas on fait un update sur la table, sinon on fait un insert.
J'espère avoir aidé.
gvc001
Messages postés
20
Date d'inscription
Statut
Membre
Dernière intervention
merci add_mi, pourriez vous me faire un petit topo pour me permettre de se fixer des idées, j'avaoue que je fais mes debuts quoique je sois hyper motivé à y arriver , Merci de votre temps
Yop, va voir par là. Dans n'importe quel langage toutes les réponses sont dans le manuel. Par là:
https://www.php.net/manual/fr/function.fgetcsv.php
il dit ça:
<?php
$row = 1;
if (($handle = fopen("test.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
echo "<p> $num champs à la ligne $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />\n";
}
}
fclose($handle);
}
?>
donc une boucle qui affiche le contenu du csv, pour pouvoir travailler avec il faut le mettre dans un tableau (array).
Il faut donc faire une requête sur la table pour obtenir le contenu déjà existant.
$resultats=mysql_query("SELECT * FROM matable");
$tab_result=mysql_fetch_array($resultats);
print_r($tab_result);
et donc comparer le champ identifiant du tableau obtenu par le csv au tableau obtenu par la requête sur la table.
Si l'identifiant existe il faut faire une requête UPDATE des champs de la table avec les valeurs du tableau obtenu sinon requête INSERT.
https://www.php.net/manual/fr/function.fgetcsv.php
il dit ça:
<?php
$row = 1;
if (($handle = fopen("test.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
echo "<p> $num champs à la ligne $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />\n";
}
}
fclose($handle);
}
?>
donc une boucle qui affiche le contenu du csv, pour pouvoir travailler avec il faut le mettre dans un tableau (array).
Il faut donc faire une requête sur la table pour obtenir le contenu déjà existant.
$resultats=mysql_query("SELECT * FROM matable");
$tab_result=mysql_fetch_array($resultats);
print_r($tab_result);
et donc comparer le champ identifiant du tableau obtenu par le csv au tableau obtenu par la requête sur la table.
Si l'identifiant existe il faut faire une requête UPDATE des champs de la table avec les valeurs du tableau obtenu sinon requête INSERT.