OVH Cloud OVH Cloud

Import export besoin de votre avis.

5 réponses
Avatar
jvmd
J'ai déjà posé la question en face car je pensais qu'un gars de chez
PC-Soft répondrai à cette question simple mais je vois que j'ai encore
péché par excès d'optimisme.

Donc voici la question

Mon problème est simple et j'ai plusieurs solutions à ma disposition.

J'ai donc besoin de votre avis éclairé pour choisir la bonne ou m'en
proposer une autre meilleure.

Voici le truc :

J'ai deux fichiers A et B.

Le fichier B est lié à A via l'ID_A qui est l'identifiant automatique
de A.

Je dois faire mon export en xml, facile y'a de jolies commandes toutes
faites.

Le problème est le suivant, si je fait un HExporteXML sur les deux
fichiers, ça marche impec, c'est déjà bien.

Mais lorsque je réintègre les données via un HImporteXML c'est la cata
car l'ID auto est recalculé vu que le fichier d'arrivé n'est pas vide
et donc ma liaison ne correspond plus à rien.

Les solutions :

- Soit je n'utilise plus l'id auto et je gère la clé unique
manuellement, dans ce cas un date()+heure() me semble pas trop mal
pour éviter les doublons, mais ça m'oblige à tout revoir et je perd la
facilité de l'id auto, par contre lors du réimport y'a plus de
problème les id liés sont cohérents.

- Soit, je passe par des fichiers intermédiaires (A_Temp et B_Temp),
c'est à dire que dans le fichier A_Temp je rajoute une rubrique
IDOrigine dans lequel je met l'ID_A d'origine et dans B_Temp je lie
l'B_Temp.ID_A à A_Temp.IDOrigine et non plus A_Temp.ID_A, ensuite je
fais mon HExporteXML et ça marche, dans l'import j'utilise aussi des
fichier intermédiaire que je traite ensuite pour garder les liaisons.

- Soit je fais une moulinette avec les fonctions XML avec laquelle je
créé le fichier XML à la main et la je fais ce que je veux dans les
deux sens mais c'est moins fun et sans doute un peu plus long en terme
de developpement.

Voila mon dilemne, pour l'instant je penche pour la deuxième solution.

Que feriez vous dans cette situation.

Merci d'avance.


----------------------------------------------
Enlever AntiSpam à mon adresse pour m'écrire.
----------------------------------------------

5 réponses

Avatar
sebNews
> J'ai donc besoin de votre avis éclairé pour choisir la bonne ou m'en
proposer une autre meilleure.



Pour ma part a chaque fois que mon application a besoin :
- d'import Export
- de réplication entre plusieurs bases

J'utilise une clé unique sur chaque fichier avec gestion manuelle
( et un fichier PARAM qui contient le dernier identifiant de chaque fichier)

Le PARAM peut en plus contenir un identifiant de base ce qui fait
Valeur identifiant fichier = valeur IdBase + Param.cleFichierN

Et donc l'identifiant est unique sur toutes les bases
exemple PARAM.idBase="Base1"
PARAM.code_client="205"

Nouveau clients :
Client.code_client="Base1205"

et modification de PARAM.code_client="206"



Sébastien
Avatar
Romain PETIT
jvmd a exposé le 12/07/2005 :

- Soit je n'utilise plus l'id auto et je gère la clé unique
manuellement, dans ce cas un date()+heure() me semble pas trop mal
pour éviter les doublons, mais ça m'oblige à tout revoir et je perd la
facilité de l'id auto, par contre lors du réimport y'a plus de
problème les id liés sont cohérents.



Evite le date+heure pour une clé unique !
Sinon comment vas-tu gérer le passage à l'heure d'été/hivers avec des
ajouts dans ces tranches horaires, la mise à l'heure de la machine
automatique ou manuelle etc etc...
De toutes facons, tu risques de te retrouver avec les mêmes problème de
doublons sur clé unique lors du réimport.

- Soit, je passe par des fichiers intermédiaires (A_Temp et B_Temp),
c'est à dire que dans le fichier A_Temp je rajoute une rubrique
IDOrigine dans lequel je met l'ID_A d'origine et dans B_Temp je lie
l'B_Temp.ID_A à A_Temp.IDOrigine et non plus A_Temp.ID_A, ensuite je
fais mon HExporteXML et ça marche, dans l'import j'utilise aussi des
fichier intermédiaire que je traite ensuite pour garder les liaisons.



Un peu usine à gaz tout ça...

- Soit je fais une moulinette avec les fonctions XML avec laquelle je
créé le fichier XML à la main et la je fais ce que je veux dans les
deux sens mais c'est moins fun et sans doute un peu plus long en terme
de developpement.



...mais c'est une solution plus perenne, plus souple, moins soumise au
tout intégré WD.
Pour l'export XML, tu gardes ta fonction HExporteXML et pour l'import,
tu gères à la mimine en utilisant le paramètre hForceIdAuto (Hajoute ou
HModifie), ce n'est pas très long à écrire.

A+

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
jvmd
Le Tue, 12 Jul 2005 10:56:10 +0200, "sebNews" écris :


Pour ma part a chaque fois que mon application a besoin :
- d'import Export
- de réplication entre plusieurs bases

J'utilise une clé unique sur chaque fichier avec gestion manuelle
( et un fichier PARAM qui contient le dernier identifiant de chaque fichier)

Le PARAM peut en plus contenir un identifiant de base ce qui fait
Valeur identifiant fichier = valeur IdBase + Param.cleFichierN

Et donc l'identifiant est unique sur toutes les bases
exemple PARAM.idBase="Base1"
PARAM.code_client="205"

Nouveau clients :
Client.code_client="Base1205"

et modification de PARAM.code_client="206"




J'avais envisagé ça mais comment génère tu ta clé unique ?

JL



----------------------------------------------
Enlever AntiSpam à mon adresse pour m'écrire.
----------------------------------------------
Avatar
jvmd
Le Tue, 12 Jul 2005 11:05:24 +0200, "Romain PETIT"
écris :

Evite le date+heure pour une clé unique !
Sinon comment vas-tu gérer le passage à l'heure d'été/hivers avec des
ajouts dans ces tranches horaires, la mise à l'heure de la machine
automatique ou manuelle etc etc...



Bé oui maintenant que tu en parles, d'un con j'ai l'ai !!


De toutes facons, tu risques de te retrouver avec les mêmes problème de
doublons sur clé unique lors du réimport.




Un peu usine à gaz tout ça...



Non ça va, disont que c'est supportable avec 2-3 tables au dela oui
j'avoue ça devient problèmatique.


- Soit je fais une moulinette avec les fonctions XML avec laquelle je
créé le fichier XML à la main et la je fais ce que je veux dans les
deux sens mais c'est moins fun et sans doute un peu plus long en terme
de developpement.



...mais c'est une solution plus perenne, plus souple, moins soumise au
tout intégré WD.
Pour l'export XML, tu gardes ta fonction HExporteXML et pour l'import,
tu gères à la mimine en utilisant le paramètre hForceIdAuto (Hajoute ou
HModifie), ce n'est pas très long à écrire.



Ok pour ça je vais regarder ça de plus près.

C'est comme toujours la solution tout à la main qui fonctionne sans
doute le mieux.

Merci pour les conseils.

JL


----------------------------------------------
Enlever AntiSpam à mon adresse pour m'écrire.
----------------------------------------------
Avatar
jvmd
Sympa l'adresse email cryptée.

Voila volé !

JL


----------------------------------------------
Pour m'écrire c'est ici :
http://cerbermail.com/?3IonFlKLpz
----------------------------------------------