|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Nouveau Membre du Club
![]() Inscription : avril 2004 Messages : 55 ![]() |
Bonjour à tous
voici mon petit soucis : j'ai une table contact avec plein de champ divers (nom, prenom,...) et un champ userID reliant ce contact à un utilisateur. je me sers d'un load data infile pour transférer des contacts venant d'un fichier csv vers ma base. Le fichier csv contient pas mal d'information utile pour les lignes contact, mais il ne contient pas l'userID. Bref quand j'effectue mon load data infile, le champ userID prend la valeur par défaut que j'ai fixé (0) et ensuite je modifie toute les entrées dans la table contact ayant l'userID à 0 en affectant la bonne valeur de l'userID. bon ca marche mais c'est pas du tout bon puisque si deux lectures de fichiers sont faites simultanement y'a rien qui empeche qu'un utilisateur se retrouve avec les contacts de quelqu'un d'autre. enfin voilà, si quelqu'un a compris tout ce que j'ai dit ici, et qu'il voit une solution à mon probleme... voili voilou, merci d'avance |
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : juin 2003 Messages : 4 893 ![]() |
la seule solution serait de rajouter ce champs au moment de l'exportation
comment crées tu le fichier csv ? |
|
|
00
|
|
|
#3 |
|
Nouveau Membre du Club
![]() Inscription : avril 2004 Messages : 55 ![]() |
bah justement c'est une exportation via outlook par exemple ou eudora...
en fait le but est de récupérer des contacts externes donc je peux pas vraiment rajouter ce qu'il faut dans le csv :-( |
|
|
00
|
|
|
#4 |
![]() ![]() Inscription : juin 2003 Messages : 4 893 ![]() |
en fait après relecture, je crois que je n'avais pas bien compris ton problème
ce que je n'ai pas encore compris c'est quand tu parle de "2 lectures d'un fichier" .. tu parle de quel fichier ? comment le fichier pour être lu 2 fois en même temps ? |
|
|
00
|
|
|
#5 |
|
Nouveau Membre du Club
![]() Inscription : avril 2004 Messages : 55 ![]() |
oui c'est fort probable que ce soit pas clair
imagine deux utilisateurs (deux userID différent) qui décide d'importer une liste de contact (*.csv) au meme moment. La table de contact étant commune (on sait à qui appartient le contact grace au champ userID), ils vont insérer dans la base grace à la commande LOAD DATA INFILE leur liste de contact. Ensuite mon code effectue le traitement suivant. il modifie les lignes de la table avec userID = 0 (valeur par défaut) en leur donnant la valeur de l'userID qui est connecté. Si y'a qu'un utilisateur qui fait ca, ca marche, mais s'ils sont deux, va y avoir tout leurs contacts qui vont avoir le champ userID à 0 donc l'un des deux va se retrouver avec des contacts qui ne lui appartiennent pas et l'autre va lui en manquer. Est ce que c'est plus clair en fait ils lisent en meme temps un fichier csv mais c'est pas le meme. |
|
|
00
|
|
|
#6 |
![]() ![]() Inscription : juin 2003 Messages : 4 893 ![]() |
ok là j'ai compris
ce que je te propose c'est d'ouvrir le fichier en PHP, de le découper et de insérer dans la base les enregistrement avec les ID déjà renseignés |
|
|
00
|
|
|
#7 |
|
Nouveau Membre du Club
![]() Inscription : avril 2004 Messages : 55 ![]() |
ouais ca c'est la méthode chiante que je risque de devoir appliquée !
et puis faudra que je le fasse en jsp puisque c'est avec cela que je bosse... merci quand meme :-( |
|
|
00
|
|
|
#8 |
|
Nouveau Membre du Club
![]() Inscription : avril 2004 Messages : 55 ![]() |
ou alors, n'y aurait il pas quelquechose permettant de bloquer l'acces à la bdd durant une suite d'opérations ?
|
|
|
00
|
|
|
#9 |
![]() ![]() Inscription : juin 2003 Messages : 4 893 ![]() |
avec LOCK ou avec des transactions mais je n'ai aucune idée si c'est bien du point de vue performance ou pas
http://dev.mysql.com/doc/mysql/fr/LOCK_TABLES.html |
|
|
00
|
|
|
#10 |
|
Nouveau Membre du Club
![]() Inscription : avril 2004 Messages : 55 ![]() |
bah j'ai réglé mon problème en lockant la table durant les opérations.
je verrai plus tard si cela pose des problèmes de performances. j'ai aussi du dropper un clé unique le temps de l'insertion et de la remettre après. Donc c'est un peu lourd mais ça tourne verrai plus tard si ça va |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com