Importation csv vers mysql avec mise à jour
Fermé
gvc001
Messages postés
20
Date d'inscription
mercredi 7 avril 2010
Statut
Membre
Dernière intervention
1 juin 2010
-
7 avril 2010 à 11:19
gvc001 Messages postés 20 Date d'inscription mercredi 7 avril 2010 Statut Membre Dernière intervention 1 juin 2010 - 14 avril 2010 à 18:12
gvc001 Messages postés 20 Date d'inscription mercredi 7 avril 2010 Statut Membre Dernière intervention 1 juin 2010 - 14 avril 2010 à 18:12
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é.
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.
gvc001
Messages postés
20
Date d'inscription
mercredi 7 avril 2010
Statut
Membre
Dernière intervention
1 juin 2010
14 avril 2010 à 18:12
14 avril 2010 à 18:12
Je vous remercie de votre apport add_min,
Je ne manquerai pas de tester cela demain sans faute et reviendrait vers vous add_min
à bientôt
Je ne manquerai pas de tester cela demain sans faute et reviendrait vers vous add_min
à bientôt
7 avril 2010 à 15:06