PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Transfert entre HFclassic et postgreSQL avec modification
Transfert entre HFclassic et postgreSQL avec modification
Iniciado por Ramirez22, 14,mar. 2019 05:59 - 1 respuesta
Miembro registrado
60 mensajes
Publicado el 14,marzo 2019 - 05:59
Bonjour.

J'ai (bien je crois) cherché pour réaliser un transfert entre 2 BDD SQL et j'ai trouvé quelques pistes, notamment ici:
[url]https://forum.pcsoft.fr/fr-FR/pcsoft.fr.windev/57636-transfert-donnees-base-hyperfile-vers-sql-serveur-mysql-57693/read.awp[/url]

Mais ça ne correspond pas tout à fait à ce que je cherche. En effet, entre l'ancienne version de l'application et la nouvelle sous postgreSQL, la structure de la base a changée.

Aussi, je cherche à charger un fichier hfsql classic et pour chaque ligne, effectuer un traitement et la transférer dans une table PostgreSQL.

J'ai déjà essayé (avec LISTE_FichierFIC et LISTE_Bases des listes contenant... bref, vous avez compris) :
// Connexion à la base source
HDéclareExterne(LISTE_FichierFIC..ValeurMémorisée,"AliasTableSource","cnxSourceSQL")
// Récupération des colonnes
sListeColonnesSource est une chaîne = HListeRubrique("AliasTableSource")

// Connexion à la base cible
HDéclareExterne(LISTE_Bases..ValeurMémorisée,"AliasTableDestination","cnxDestinationSQL")
sListeColonnesDestination est une chaîne = HListeRubrique("AliasTableDestination")

// Controle du nombre de colonne
SI ChaîneOccurrence(sListeColonnesSource,RC) <> ChaîneOccurrence(sListeColonnesDestination,RC) ALORS
Erreur("Le nombre de colonnes de chaque table ne correspond pas")
HAnnuleDéclaration("AliasTableSource")
HAnnuleDéclaration("AliasTableDestination")
Sablier(Faux)
RETOUR
FIN

// Copie des données sources vers les données cibles
POUR TOUT "AliasTableSource"
HCopieEnreg("AliasTableDestination","AliasTableSource",sListeColonnesDestination,sListeColonnesSource,hCopieIdAuto)
Temporisation(10)
HAjoute("AliasTableDestination",hFixeIdAuto)
Temporisation(10)
FIN

Et cela fonctionne très bien. Mais cela réalise une copie brute des données et plante lamentablement sur les fichiers/tables dont la structure a changée.

Comment faire un
SELECT * FROM fichierFIC1

sur la base HFSQL puis
Traitement des Données

puis
INSERT INTO table1 (...) VALUES (...);

sur la base postgreSQL ?
Le tout avec du SQLExec puisque je voudrais maitriser les échanges (notamment les majuscules/minuscules, accentuation etc qui ne sont pas acceptées par postgresql de la même manière).

C'est plus le côté "switch" entre table qui m'intéresse.

Merci de vos bon conseils.

Cordialement,
SV
Miembro registrado
2.682 mensajes
Publicado el 14,marzo 2019 - 06:50
Bonjour,

j'ai réalisé un transfert de données entre une base odbc et postgresql. Je ne peux que te recommander de créer des fichiers plats si tu le peux et de les importer avec l'utilitaire "copy" de postgresql. Tu vas gagner un temps fou.

De plus ça te laisse la main pour retraiter les données au moment de la création du fichier.

--
Cordialement,

Philippe SAINT-BERTIN