Mise à jour de fichiers HF CS avec des fichiers HF classic

Le
nicologvi
Bonjour amis développeurs,

J'ai une question à vous soumettre afin de trouver la meilleure méthode=
pour mettre à jour la base de données Hyperfilesql CS depuis des fichi=
ers HF classic.

Jusqu'à présent la méthode utilisée était la suivante:

1 - Envoi ftp sur le serveur des nouveaux fichiers
2 - dezippage
3 - Suppression de tous les enregistrements du fichier de destination
4 - Déclaration externe du fichier à importer avec un nouveau nom

dans une boucle
5 - copie de l'enregistrement lu
6 - ajout

puis fermeture du fichier d'import

voici le code:

=
-
// Importe B2W (Base to Web)
HSupprimeTout(tmp_fichier_base)
HGèreDoublon(tmp_fichier_base,"*",Faux)
POUR TOUT fExtraitChemin(UnFichier,fFichier)+"_B2W"
HCopieEnreg(tmp_fichier_base,fExtraitChemin(UnFichier,fFichier)+"_B2W")
HAjoute(tmp_fichier_base)
FIN
HFerme(fExtraitChemin(UnFichier,fFichier)+"_B2W")
HAnnuleDéclaration(fExtraitChemin(UnFichier,fFichier)+"_B2W")
=
-

Cette solution fonctionne mais est extrêmement chronophage dès lors que=
les fichiers dépassent une certaine taille.

voici les solutions envisagées, j'aurais aimé avoir vos avis:

1 - Arrêt du serveur HF CS (via le service manta), copie des fichiers da=
ns le répertoire BDD des nouveaux fichiers qui écrasent les anciens, re=
démarrage du serveur HF CS

2- Utilisation du Fcopiefichier mais si les fichiers sont bloqués ce n'es=
t pas possible et je ne connais pas la solution pour deconnecter tous le mo=
nde du serveur de fichier bloquer le serveur pour mon traitement et le dé=
bloquer pour le rendre de nouveau accessible.

3- la réplication mais c'est quand même super lourd elle a peut-être =
évoluée depuis les deconvenues rencontrées quelques années en arri=
ère

Merci pour vos réponses éclairées

Nicolas Logvinenko
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Fredo
Le #25581142
Salut,

En théorie, la clé unique sur tes fichiers n'a pas du changer. La
meilleur façon consiste à n'ajouter que les enregistrement n'existant
pas et à ne modifier que les enregistrement dont la date/heure de modif
est supérieure à la date de dernière synchro avec pourquoi pas une
réplication entière une fois par jour/semaine lors d'une période
d’inactivité suffisamment longue.

Bon dev

Fred.

Ps : passe le bonjour à ton paternel :)



Le 31/07/2013 10:30, nicologvi a écrit :
Bonjour amis développeurs,

J'ai une question à vous soumettre afin de trouver la meilleure méthode pour mettre à jour la base de données Hyperfilesql CS depuis des fichiers HF classic.

Jusqu'à présent la méthode utilisée était la suivante:

1 - Envoi ftp sur le serveur des nouveaux fichiers
2 - dezippage
3 - Suppression de tous les enregistrements du fichier de destination
4 - Déclaration externe du fichier à importer avec un nouveau nom

dans une boucle
5 - copie de l'enregistrement lu
6 - ajout

puis fermeture du fichier d'import

voici le code:

-------------------------------------------------------------------------------------------------------------------------------------
// Importe B2W (Base to Web)
HSupprimeTout(tmp_fichier_base)
HGèreDoublon(tmp_fichier_base,"*",Faux)
POUR TOUT fExtraitChemin(UnFichier,fFichier)+"_B2W"
HCopieEnreg(tmp_fichier_base,fExtraitChemin(UnFichier,fFichier)+"_B2W")
HAjoute(tmp_fichier_base)
FIN
HFerme(fExtraitChemin(UnFichier,fFichier)+"_B2W")
HAnnuleDéclaration(fExtraitChemin(UnFichier,fFichier)+"_B2W")
-------------------------------------------------------------------------------------------------------------------------------------

Cette solution fonctionne mais est extrêmement chronophage dès lors que les fichiers dépassent une certaine taille.

voici les solutions envisagées, j'aurais aimé avoir vos avis:

1 - Arrêt du serveur HF CS (via le service manta), copie des fichiers dans le répertoire BDD des nouveaux fichiers qui écrasent les anciens, redémarrage du serveur HF CS

2- Utilisation du Fcopiefichier mais si les fichiers sont bloqués ce n'est pas possible et je ne connais pas la solution pour deconnecter tous le monde du serveur de fichier bloquer le serveur pour mon traitement et le débloquer pour le rendre de nouveau accessible.

3- la réplication mais c'est quand même super lourd elle a peut-être évoluée depuis les deconvenues rencontrées quelques années en arrière...

Merci pour vos réponses éclairées...

Nicolas Logvinenko

nicologvi
Le #25593672
Le lundi 5 août 2013 08:49:36 UTC+2, Fredo a écrit :
Salut,



En théorie, la clé unique sur tes fichiers n'a pas du changer. La

meilleur façon consiste à n'ajouter que les enregistrement n'existant

pas et à ne modifier que les enregistrement dont la date/heure de modif

est supérieure à la date de dernière synchro avec pourquoi pas une

réplication entière une fois par jour/semaine lors d'une période

d’inactivité suffisamment longue.



Bon dev



Fred.



Ps : passe le bonjour à ton paternel :)







Le 31/07/2013 10:30, nicologvi a écrit :

> Bonjour amis développeurs,

>

> J'ai une question à vous soumettre afin de trouver la meilleure mét hode pour mettre à jour la base de données Hyperfilesql CS depuis des f ichiers HF classic.

>

> Jusqu'à présent la méthode utilisée était la suivante:

>

> 1 - Envoi ftp sur le serveur des nouveaux fichiers

> 2 - dezippage

> 3 - Suppression de tous les enregistrements du fichier de destination

> 4 - Déclaration externe du fichier à importer avec un nouveau nom

>

> dans une boucle

> 5 - copie de l'enregistrement lu

> 6 - ajout

>

> puis fermeture du fichier d'import

>

> voici le code:

>

> ----------------------------------------------------------------------- --------------------------------------------------------------

> // Importe B2W (Base to Web)

> HSupprimeTout(tmp_fichier_base)

> HGèreDoublon(tmp_fichier_base,"*",Faux)

> POUR TOUT fExtraitChemin(UnFichier,fFichier)+"_B2W"

> HCopieEnreg(tmp_fichier_base,fExtraitChemin(UnFichier,fFichier)+"_B2W ")

> HAjoute(tmp_fichier_base)

> FIN

> HFerme(fExtraitChemin(UnFichier,fFichier)+"_B2W")

> HAnnuleDéclaration(fExtraitChemin(UnFichier,fFichier)+"_B2W")

> ----------------------------------------------------------------------- --------------------------------------------------------------

>

> Cette solution fonctionne mais est extrêmement chronophage dès lors que les fichiers dépassent une certaine taille.

>

> voici les solutions envisagées, j'aurais aimé avoir vos avis:

>

> 1 - Arrêt du serveur HF CS (via le service manta), copie des fichier s dans le répertoire BDD des nouveaux fichiers qui écrasent les anciens , redémarrage du serveur HF CS

>

> 2- Utilisation du Fcopiefichier mais si les fichiers sont bloqués ce n'est pas possible et je ne connais pas la solution pour deconnecter tous l e monde du serveur de fichier bloquer le serveur pour mon traitement et le débloquer pour le rendre de nouveau accessible.

>

> 3- la réplication mais c'est quand même super lourd elle a peut-ê tre évoluée depuis les deconvenues rencontrées quelques années en a rrière...

>

> Merci pour vos réponses éclairées...

>

> Nicolas Logvinenko

>



Salut Fred,
merci pour ta réponse,
Tu ne penses pas que d'écraser les fichiers
est plus rapide que de parcourir le fichier d'origine
et le fichier de destination pour mettre a jour les deltas ?

Merci.

Pour info j'ai changé de boite...

Mon email direct

Nico
Fredo
Le #25597682
Le 13/08/2013 15:56, nicologvi a écrit :
Le lundi 5 août 2013 08:49:36 UTC+2, Fredo a écrit :
Salut,



En théorie, la clé unique sur tes fichiers n'a pas du changer. La

meilleur façon consiste à n'ajouter que les enregistrement n'existant

pas et à ne modifier que les enregistrement dont la date/heure de modif

est supérieure à la date de dernière synchro avec pourquoi pas une

réplication entière une fois par jour/semaine lors d'une période

d’inactivité suffisamment longue.



Bon dev



Fred.



Ps : passe le bonjour à ton paternel :)







Le 31/07/2013 10:30, nicologvi a écrit :

Bonjour amis développeurs,







J'ai une question à vous soumettre afin de trouver la meilleure méthode pour mettre à jour la base de données Hyperfilesql CS depuis des fichiers HF classic.







Jusqu'à présent la méthode utilisée était la suivante:







1 - Envoi ftp sur le serveur des nouveaux fichiers



2 - dezippage



3 - Suppression de tous les enregistrements du fichier de destination



4 - Déclaration externe du fichier à importer avec un nouveau nom







dans une boucle



5 - copie de l'enregistrement lu



6 - ajout







puis fermeture du fichier d'import







voici le code:







-------------------------------------------------------------------------------------------------------------------------------------



// Importe B2W (Base to Web)



HSupprimeTout(tmp_fichier_base)



HGèreDoublon(tmp_fichier_base,"*",Faux)



POUR TOUT fExtraitChemin(UnFichier,fFichier)+"_B2W"



HCopieEnreg(tmp_fichier_base,fExtraitChemin(UnFichier,fFichier)+"_B2W")



HAjoute(tmp_fichier_base)



FIN



HFerme(fExtraitChemin(UnFichier,fFichier)+"_B2W")



HAnnuleDéclaration(fExtraitChemin(UnFichier,fFichier)+"_B2W")



-------------------------------------------------------------------------------------------------------------------------------------







Cette solution fonctionne mais est extrêmement chronophage dès lors que les fichiers dépassent une certaine taille.







voici les solutions envisagées, j'aurais aimé avoir vos avis:







1 - Arrêt du serveur HF CS (via le service manta), copie des fichiers dans le répertoire BDD des nouveaux fichiers qui écrasent les anciens, redémarrage du serveur HF CS







2- Utilisation du Fcopiefichier mais si les fichiers sont bloqués ce n'est pas possible et je ne connais pas la solution pour deconnecter tous le monde du serveur de fichier bloquer le serveur pour mon traitement et le débloquer pour le rendre de nouveau accessible.







3- la réplication mais c'est quand même super lourd elle a peut-être évoluée depuis les deconvenues rencontrées quelques années en arrière...







Merci pour vos réponses éclairées...







Nicolas Logvinenko









Salut Fred,
merci pour ta réponse,
Tu ne penses pas que d'écraser les fichiers
est plus rapide que de parcourir le fichier d'origine
et le fichier de destination pour mettre a jour les deltas ?

Merci.

Pour info j'ai changé de boite...

Mon email direct

Nico





Salut,

Ecraser les fichiers peut avoir deux conséquences néfastes:

1) Suivant la taille des fichiers cela peut être long
2) Si un des deux fichiers est déjà ouvert par un processus, le
hcopiefichier est impossible et tant qu'a faire une copie
d'enregistrement, autant ne mettre à jour que ceux qui sont nécessaires.

Bon dev,

Fred.
Publicité
Poster une réponse
Anonyme