[MYSQL] Import fichier csv : empecher l'update de certaines colonnes

Import fichier csv : empecher l'update de certaines colonnes [MYSQL] - SQL/NoSQL - Programmation

Marsh Posté le 18-04-2016 à 23:40:11    

Bonjour, :hello:  
 
Je suis sur un hébergement mutualisé.
 
Ma table est la suivante :
Contact | date de relance | commentaire
 
J'ai un fichier csv contenant 2 colonnes "contact" et "date de relance".  
 
Voici la maj que je souhaite faire :
envoie du fichier, mets a jours les données existantes, et conserve celles insérées
 
http://image.noelshack.com/minis/2016/16/1461015492-screen.png
 
Le truc c'est que j'y arrive pas. Meme si je précise que 2 colonnes "contact" et "date de relance" dans l'import, ca va quand meme m'effacer les commentaires.
ps : j'ai essayé avec et sans "Remplacer les données de la table avec le fichier"
 
sauriez vous comment faire ?
 
merci  :jap:

Reply

Marsh Posté le 18-04-2016 à 23:40:11   

Reply

Marsh Posté le 19-04-2016 à 09:59:49    

Bonjour,
Si tu coches la case "Remplacer les données de la table", il vas simplement faire un TRUNCATE de ta table pour la vider avant d'importer.
Je crois que dans un import via phpmyadmin tu ne peux faire qu'un INSERT INTO, hors toi tu aurais besoin d'un INSERT IGNORE et/ou un REPLACE et/ou un UPDATE.
Je penses qu'il faut que tu importes dans un autre table (import_csv par exemple) et qu'en suite tu fasse 2 requêtes SQL, une qui met à jour les champs existant, et une autre qui crée les nouveau enregistrement.
Et que ta colonne "Contact" soit une clefs unique sur ta table 1212 bien sur ! ^^

Code :
  1. --MISE A JOUR
  2. UPDATE `import_csv`, `1212` SET `1212`.`date de relance` = `import_csv`.`date de relance` WHERE `1212`.`Contact` = `import_csv`.`Contact`;
  3. --IMPORT
  4. INSERT IGNORE INTO `1212` (`Contact`, `date de relance`) SELECT `Contact`, `date de relance` FROM `import_csv`;


---------------
D3
Reply

Marsh Posté le 19-04-2016 à 17:49:23    

Merci beaucoup pour ta réponse détaillée mechkurt !
 
je vais m'en servir :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed