Rechercher : dans
Par :

Phpmyadmin Import CSV avec controle d'entrée

Dernière réponse le 19 oct 2009 à 15:54:00 Christr, le 15 jui 2009 à 14:05:11 
 Signaler ce message aux modérateurs

Bonjour,

Voila je souhaiterais faire un script pour importer ma feuille csv

les premiers test d'import fonctionne bien

mon souci actuel et que :

le fichier csv comprend à l'instant t ceux-ci :
"2009-07-15";"15:22:90";"titi"

cependant à l'instant t2 il est comme ceux-ci :
"2009-07-15";"15:22:09";"titi"
"2009-07-15";"15:32:11";"tata"

cependant à l'instant t3 il est comme ceux-ci :
"2009-07-15";"15:22:09";"dors";"titi"
"2009-07-15";"15:32:11";"mange";"tata"
"2009-07-16";"17:32:11";"dors";"titi"

et je souhaiterais que mon fichier l'hors de l'import ne m'écrive pas deux fois la même ligne ?
qu'il y est en somme une vérification des entrés précédente avant l'ajout

Est ce possible ??

Configuration: Change en permanence

Meilleures réponses pour « phpmyadmin Import CSV avec controle d'entrée » dans :
Exporter à coup sûr du CSV VoirExporter des données au format CSV n'est pas si trivial qu'il n'y paraît. Dès que vos données contiennent des virgules ou des guillemets, tout semble partir en vrille. Il y a une astuce. Voici comment procéder pour exporter à coup sûr vos...
Import CSV: Mauvais alignement des dates VoirVous avez ouvert un fichier CSV avec Excel contenant une colonne de dates et ces dernières sont mal alignées. Elles sont par exemple tantôt alignées à droite, tantôt à gauche. A vrai dire, il se peut que votre problème soit plus grave que vous ne...
Utiliser la vidéo surveillance en entreprise VoirLa vidéo surveillance d'entreprise sur IP (sur Internet) consiste à installer des caméras de surveillance sur un lieu de travail (bureau, magasin, entrepôt, etc.) reliées à un ordinateur. Principal avantage : la numérisation permet une grande...
Importer et exporter des données sous MySQL VoirImportation et exportation Les Système de Gestion de Bases de Données tels que MySQL permettent de manipuler facilement et avec beaucoup de souplesse un très important volume de données. Toutefois, aussi robuste soit MySQL, il peut être intéressant...
Le bus USB (Universal Serial Bus) VoirPrésentation du bus USB Le bus USB (Universal Serial Bus, en français Bus série universel) est, comme son nom l'indique, basé sur une architecture de type série. Il s'agit toutefois d'une interface entrée-sortie beaucoup plus rapide que les ports...

1

epoulos, le 15 jui 2009 à 14:08:29

Bonjour,

Lance l'écriture dans le fichier à la fin du script. Ce qui te permettra de tester si ce n'est pas une entrée qui existe déjà. Entre temps, concatène les écritures dans une variable.

Cordialement,
epoulos "Le bon sens est la chose du monde la mieux partagée ... " R.D.

Répondre à epoulos

2

Christr, le 15 jui 2009 à 15:45:34

Je viens de lancer ma commande

LOAD DATA INFILE "/var/www/html/titi.csv" REPLACE INTO TABLE balance FIELDS TERMINATED BY ";";

mon souci est que avec cette commande unique il me rajoute toute la page directement cela signifie que j'ai des doublons

il y aune méthode simple pour éviter les doublons ou pas ?

Répondre à Christr

3

epoulos, le 15 jui 2009 à 17:01:06

Fais une requête au niveau de la base de données pour supprimer le doublon et non au niveau du php "Le bon sens est la chose du monde la mieux partagée ... " R.D.

Répondre à epoulos

4

Christr, le 15 jui 2009 à 17:20:55

Ce que tu me dit sa revien a vidé tout les champs et remettre les compteur à zéro pour réinséré le tout mais ceu que je souhaiterais c'est qu il n'ajoute que les champs non présent dans la table sachant que l'odre est toujours le meme

si il commence la table à 33 entré et que le fichier csv en à 100 il ajoutera les lignes de 34 à 100

tu vois ou je veu en venir ?

Répondre à Christr

5

epoulos, le 16 jui 2009 à 11:13:21

Je ne sais pas trop comment coder ça mais au niveau de la requête qui rempli la base, fait des tests avant écriture.
Je ne suis pas un spécialiste des bases de données dsl. "Le bon sens est la chose du monde la mieux partagée ... " R.D.

Répondre à epoulos

6

Zep3k!GnO, le 16 jui 2009 à 16:36:51

Je comprends pas tout, détail un peu plus, l'import tu le fais comment ?
Tu développes avec un laguage en particulier pour le faire ?
et qu'est ce que tu appelles "double" :
"2009-07-15";"15:22:09";"dors";"titi"
"2009-07-15";"15:32:11";"mange";"tata"
"2009-07-16";"17:32:11";"dors";"titi"

Je ne vois pas de doublons, a moins que tu n'importes quele couple "dors" et "titi" et que la date et l'heure c'est l'import qui le génère...

bref dis en + !

Zep3k!GnO

On est des rangers mec, des rangers...

Répondre à Zep3k!GnO

7

Christr, le 16 jui 2009 à 17:01:56

AAAAAA le big boss ça veu dire que le problème va vite avancer

donc voila je t explique j'ai une application qui génère un fichier csv qui est mis à jour toute les 5 minutes


ma table balance


Field°°°°Type°°°°°°°°°Collation°°°°°°°°Attributes°°Null°°Def­ault°°°°Extra°°°°°°°°°°

ref°°°°°°int(11)°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°No°°°°°°°­°°°°°°auto_increment
date°°°°date°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°No°°°°°°°°­°°°°°°°°°°°°°°°°°°°°
temps°°time°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°No°°°°°°°°°­°°°°°°°°°°°°°°°°°°°
action°°varchar(4)°°°°utf8_general_ci°°°°°°°°°°°°°°No°°°°°°°­°°°°°°°°°°°°°°°°°°°°°
id°°°°°°varchar(200)°°utf8_general_ci°°°°°°°°°°°°°°No°°°°°°°­°°°°°°°°°°°°°°°°°°°°°



"oups y avait un tit problème dans le fichier csv"


le fichier csv crée à 15h25 ceux-ci :
"";"2009-07-15";"15:22:90";"titi"

à 15h30 ceux-ci :
"";"2009-07-15";"15:22:09";"titi"
"";"2009-07-15";"15:28:11";"tata"

à 15h35 ceux-ci
"";"2009-07-15";"15:22:09";"dors";"titi"
"";"2009-07-15";"15:28:11";"mange";"tata"
"";"2009-07-16";"17:32:11";"dors";"titi"

le fichier csv se nomme tutu.csv oki ?


donc moi j'ai une commande que je lance dans sql comme tu ma expliqué
(pour revenir au problème antérieur de l'appli si tu te souvien)

l'orsque que je la lance à 15h30

LOAD DATA INFILE "/var/www/html/tutu.csv" REPLACE INTO TABLE balance FIELDS TERMINATED BY ";";

je n'ai pas de problème

je la relance à 15h40

LOAD DATA INFILE "/var/www/html/titi.csv" REPLACE INTO TABLE balance FIELDS TERMINATED BY ";";

pour mettre à jour ma base de donnée

voici le problème à cause de la référence auto incrémenté la je me retrouve avec des doublons sur la ligne date temps action id

Répondre à Christr

8

Zep3k!GnO, le 16 jui 2009 à 17:21:29

Merci, merci, tant que ça, ça va me faire rougir et si j't'aide pas je vais passer pour un bidon :P

Si je comprend le truc il faudrait que dans ta BDD tu créé un index UNIQUE sur les 2 champs qui t'interessent : "temps" et "actions". Au moins le replace agirait correctment c'est a dire a faire un update et non un insert lorsqu'il identifie un enregistrement via ce "couple" unique...
Zep3k!GnO

On est des rangers mec, des rangers...

Répondre à Zep3k!GnO

9

Christr, le 17 jui 2009 à 09:21:01

Mon souci et que je ne peu crée de champ unique sur le temps car si la date change et que l'action est faite au meme temps sa risque de posé problème non ?

et l'action il y en a que 2 possible

désolé une erreur dans l'explication du csv je recommence :
le fichier csv crée à 15h25 ceux-ci :
"";"2009-07-15";"15:22:90";"dors";"titi"

à 15h30 ceux-ci :
"";"2009-07-15";"15:22:09";"dors";"titi"
"";"2009-07-15";"15:28:11";mange";"tata"

à 15h35 ceux-ci
"";"2009-07-15";"15:22:09";"dors";"titi"
"";"2009-07-15";"15:28:11";"mange";"tata"
"";"2009-07-16";"17:32:11";"dors";"titi"

le fichier csv se nomme tutu.csv oki ?

Répondre à Christr

10

Zep3k!GnO, le 17 jui 2009 à 10:59:28

Mm dis moi c'est quoi pour toi dans ta BDD les champs qui forme un "enregistrement unique" car la je vois pas bien si c'ets ça la notion de doublons si tu prends en compte la date...
J'ai un peu de mal a cerner ton problème :S
Zep3k!GnO

On est des rangers mec, des rangers...

Répondre à Zep3k!GnO

11

Christr, le 17 jui 2009 à 11:21:43

Dans ma table :

ref°°°°°°int(11)°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°No°°°°°°°­­°°°°°°auto_increment
date°°°°date°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°No°°°°°°°°­­°°°°°°°°°°°°°°°°°°°°
temps°°time°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°No°°°°°°°°°­­°°°°°°°°°°°°°°°°°°°
action°°varchar(4)°°°°utf8_general_ci°°°°°°°°°°°°°°No°°°°°°°­­°°°°°°°°°°°°°°°°°°°°°
id°°°°°°varchar(200)°°utf8_general_ci°°°°°°°°°°°°°°No°°°°°°°­­°°°°°°°°°°°°°°°°°°°°°


la colone ref est auto incrémenté et clé primaire
c'est pourquoi dans mon csv le premier champs est vide et qu'il a juste des guillemet

"";"2009-07-15";"15:22:09";"dors";"titi"

ensuite ba y a la date temps action id

donc si j'envoi mmon csv qui as
"";"2009-07-15";"15:22:09";"dors";"titi"
en lecture sql sa fera
1 2009-07-15 15:22:09 dors titi

mais si je renvoi mon csv avec
"";"2009-07-15";"15:22:09";"dors";"titi"
"";"2009-07-15";"15:28:11";mange";"tata"
en lecture sql sa feras
1 2009-07-15 15:22:09 dors titi
2 2009-07-15 15:22:09 dors titi
3 2009-07-15 15:28:11 mange tata

donc doublon entre la ligne 1 et 2

tu voi ou je veu en venir c'est pas simple à expliquer

Répondre à Christr

12

Zep3k!GnO, le 17 jui 2009 à 11:26:50

Okay ! Je vois un peu mieux le souci ;)

Et un index unique sur "date temps action id" ?

Zep3k!GnO

On est des rangers mec, des rangers...

Répondre à Zep3k!GnO

13

Christr, le 17 jui 2009 à 11:32:09

Je sais pas si sa peu marcher sachant que la date reste la meme chaque jour et pour tous et le temps revien en continue chaque jour et pour les action et les id et bien c'est a peu près pareil

tu crois que sa peu fonctionner ?

Répondre à Christr

14

Christr, le 17 jui 2009 à 11:34:56

Je viens d'essayé en maitenan des index a tout le monde et sa marche pas snifffff

Répondre à Christr

15

Zep3k!GnO, le 17 jui 2009 à 11:40:53

Quand tu dis tout le monde, t'as pas mis sur "ref" au moins ?
c'est sur tout sauf "ref"
Zep3k!GnO

On est des rangers mec, des rangers...

Répondre à Zep3k!GnO

16

Christr, le 17 jui 2009 à 14:15:54

BA SI TOUT LE MONDE KOI

oki je vai refaire ma table lol

Répondre à Christr

17

Christr, le 17 jui 2009 à 14:29:06

Re

désolé

sa ne fonctionne pas arfffff

Répondre à Christr

18

Zep3k!GnO, le 17 jui 2009 à 15:43:07

Bingo !

Alors, essayes avec

LOAD DATA INFILE "/var/www/html/titi.csv" REPLACE INTO TABLE balance FIELDS TERMINATED BY ";" LINES TERMINATED BY '\r\n'

source : http://dev.mysql.com/doc/refman/5.0/fr/load-data.html

Zep3k!GnO

On est des rangers mec, des rangers...

Répondre à Zep3k!GnO

19

Zep3k!GnO, le 17 jui 2009 à 17:12:27

Dis moi si ça marche ;)
Zep3k!GnO

On est des rangers mec, des rangers...

Répondre à Zep3k!GnO
Collection CommentÇaMarche.net