Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

3 réponses
Avatar
nicologvi
Bonjour amis d=E9veloppeurs,

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

Jusqu'=E0 pr=E9sent la m=E9thode utilis=E9e =E9tait 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=E9claration externe du fichier =E0 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) =09
HSupprimeTout(tmp_fichier_base)
HG=E8reDoublon(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=E9claration(fExtraitChemin(UnFichier,fFichier)+"_B2W")
---------------------------------------------------------------------------=
----------------------------------------------------------

Cette solution fonctionne mais est extr=EAmement chronophage d=E8s lors que=
les fichiers d=E9passent une certaine taille.

voici les solutions envisag=E9es, j'aurais aim=E9 avoir vos avis:

1 - Arr=EAt du serveur HF CS (via le service manta), copie des fichiers da=
ns le r=E9pertoire BDD des nouveaux fichiers qui =E9crasent les anciens, re=
d=E9marrage du serveur HF CS=20

2- Utilisation du Fcopiefichier mais si les fichiers sont bloqu=E9s 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=E9=
bloquer pour le rendre de nouveau accessible.

3- la r=E9plication mais c'est quand m=EAme super lourd elle a peut-=EAtre =
=E9volu=E9e depuis les deconvenues rencontr=E9es quelques ann=E9es en arri=
=E8re...

Merci pour vos r=E9ponses =E9clair=E9es...

Nicolas Logvinenko

3 réponses

Avatar
Fredo
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

Avatar
nicologvi
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
Avatar
Fredo
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.