lumnik. / scénarios Tous les scénarios · English

Progress, FoxPro, Access: trois dinosaures, un parc de machines

Objectif Lire les registres de machines de trois ateliers tels que leurs vieilles bases les exportent, sans retoucher un fichier, et les réunir en un seul parc.

Un groupe industriel a trois ateliers, et chaque atelier tient son parc de machines dans sa propre base de bureau, installée il y a vingt ou trente ans.

export
nord/machines.d (Progress EXPORT, ISO-8859-1):
export
"M-1101" "Presse hydraulique 250 t" 04/02/87 10/02/26 yes 18500.00 "Joint de vérin remplacé"
export
"M-1102" "Tour ""Cazeneuve"" HB 500" 09/17/79 03/11/26 no 4200.00 ""
export
"M-1103" "Centre d'usinage 5 axes" 03/14/19 09/24/26 yes 212000.00 "Broche révisée.
export
Prévoir le changement des courroies en 2027."
export
est/MACHINES.TXT (FoxPro COPY TO DELIMITED, CP850):
export
"M-2201","Fraiseuse Huré",19830208,20260819,T,6500.00
export
"M-2202","Perceuse à colonne",19980601,,F,900.00
export
"M-2203","Rectifieuse plane Géibel",20021014,20260402,T,21000.00
export
sud/Machines.txt (Access text export, windows-1252):
export
"Machine";"Libellé";"Achat";"Révision";"Contrat";"Valeur";"Notes"
export
"M-3301";"Plieuse Amada 100 t";09/07/2012 00:00:00;15/07/2026 00:00:00;-1;47000,00;"RAS"
export
"M-3302";"Scie à ruban";01/06/1998 00:00:00;;0;2300,00;""

preuves: replay.log, sources.txt, nord.txt, runs-est.txt, dlq-est.txt, est-guessed.txt, est-cp850.txt, sud.txt, sud-types.txt, conflicts.txt, parc.txt · transform v1

machines.d
"M-1101" "Presse hydraulique 250 t" 04/02/87 10/02/26 yes 18500.00 "Joint de vérin remplacé"
"M-1102" "Tour ""Cazeneuve"" HB 500" 09/17/79 03/11/26 no 4200.00 ""
"M-1103" "Centre d'usinage 5 axes" 03/14/19 09/24/26 yes 212000.00 "Broche révisée.
Prévoir le changement des courroies en 2027."
"M-1104" "Cisaille guillotine 3 m" 06/01/04 ? ? 9800.00 "Reçue d'un autre site, sans carnet"
"M-1105" "Poinçonneuse CN" 01/20/11 06/30/26 yes 64000.00 ""
"M-1106" "Pont roulant 5 t" 11/05/96 05/06/26 yes 15000.00 "Contrôle VGP annuel"
manifests/20-est-foxpro.yaml
apiVersion: connectors.lumnik.io/v1kind: Connectormetadata:  name: scenario-legacy-est-a  connector_type: csv-file  scopes: [maintenance-a]spec:  transport:    kind: local    path: /tmp/lumnik-scenario/legacy-desktop-exports/a/est/MACHINES.TXT   # FoxPro 2.6 for DOS, COPY TO DELIMITED  parser:    delimiter: ","    has_header: false    columns: [machine, label, bought, serviced, contract, value]  after_process: none  mapping:    cell:      - parse-date: { column: bought, formats: [yyyyMMdd] }      - parse-date: { column: serviced, formats: [yyyyMMdd] }      - parse-boolean: { column: contract }      - parse-number: { column: value }
manifests/21-est-foxpro-cp850.yaml
apiVersion: connectors.lumnik.io/v1kind: Connectormetadata:  name: scenario-legacy-est-a  connector_type: csv-file  scopes: [maintenance-a]spec:  transport:    kind: local    path: /tmp/lumnik-scenario/legacy-desktop-exports/a/est/MACHINES.TXT   # FoxPro 2.6 for DOS, COPY TO DELIMITED  parser:    delimiter: ","    encoding: IBM850                       # the DOS code page, declared    has_header: false    columns: [machine, label, bought, serviced, contract, value]  after_process: none  mapping:    cell:      - parse-date: { column: bought, formats: [yyyyMMdd] }      - parse-date: { column: serviced, formats: [yyyyMMdd] }      - parse-boolean: { column: contract }      - parse-number: { column: value }
Machines.txt
"Machine";"Libellé";"Achat";"Révision";"Contrat";"Valeur";"Notes"
"M-3301";"Plieuse Amada 100 t";09/07/2012 00:00:00;15/07/2026 00:00:00;-1;47000,00;"RAS"
"M-3302";"Scie à ruban";01/06/1998 00:00:00;;0;2300,00;""
"M-3303";"Tour CN Mazak";21/02/2017 00:00:00;08/10/2026 00:00:00;-1;88000,00;"Bruit de roulement côté moteur à chaud, au-delà de 40 minutes de marche. Le technicien a relevé une vibration de 7,1 mm/s au palier arrière, contre 2,8 à la réception de la machine. Roulement commandé chez le fabricant, délai annoncé de six semaines; en a"
"M-3304";"Soudeuse par points";12/04/2001 00:00:00;20/01/2026 00:00:00;0;3500,00;"Électrodes changées.
Pince réglée à 3 kN."
"M-3305";"Compresseur à vis 15 kW";01/10/2009 00:00:00;30/09/2026 00:00:00;-1;12000,00;""
"M-2206";"Rectifieuse cylindrique";03/03/2008 00:00:00;18/09/2026 00:00:00;-1;54000,00;"Arrivée de l'atelier Est en 2025"
manifests/40-machine.yaml
kind: Entityname: ScenarioMachineAdescription: "One machine of the group, as the register of its workshop holds it: Progress at Nord, FoxPro at Est, Access at Sud."scopes: [maintenance-a]sources:  - table: t_scenario_legacy_nord_a    map: { machine: machine, label: label, bought: bought, serviced: serviced, contract: contract, value: value, notes: notes }  - table: t_scenario_legacy_est_a    map: { machine: machine, label: label, bought: bought, serviced: serviced, contract: contract, value: value }  - table: t_scenario_legacy_sud_a    map: { Machine: machine, Libellé: label, Achat: bought, Révision: serviced, Contrat: contract, Valeur: value, Notes: notes }match: [machine]

Limites

  • Les mémos coupés à la source ne se voient pas: Access coupe un mémo à 255 caractères à l'export (M-3303), FoxPro COPY TO n'exporte pas les mémos. Le hub lit ce qu'il reçoit.
  • Une page de code devinée reste une supposition: le hub signale un fichier qui ressemble à une page DOS lue en windows-1252, pas toutes les erreurs d'encodage.
  • Après un mauvais encodage, le fichier se relit avec lm endpoint reset-cursor; le connecteur ne le relit pas de lui-même.
  • Le hub n'a pas de dialecte jdbc-generic pour Progress, FoxPro ou Access: seuls leurs exports sont lus.
  • La table de lm entity get se décale sur un mémo de plusieurs lignes (#1889); la page montre le parc par SQL.
  • Machines, dates et valeurs synthétiques; les formats d'export sont reproduits, pas produits par les logiciels eux-mêmes.

Maintenance · trois ateliers

Trois ateliers, trois vieilles bases.

Progress à Nord, FoxPro pour DOS à Est, Access à Sud. Aucune ne sera migrée.

machines.d · MACHINES.TXT · Machines.txt

Le problème

FoxPro écrit en CP850. Le hub devinait windows-1252.

  • Huré devenait Hur‚, sans un mot.
  • Le É de « Électroérosion » arrêtait le fichier à la ligne 0.

Ce qui n'est pas modifié

Les trois bases restent telles quelles.

  • Leurs exports sont ceux qu'elles savent faire.
  • Aucun fichier retouché, aucun pilote ODBC.

Ce qu'il a fallu écrire

encoding: IBM850

Une ligne dans le connecteur FoxPro.

  • Puis lm endpoint reset-cursor.
  • Les six machines d'Est, accents justes.

Ce qui a été corrigé

Un encodage deviné est dit (#1885).

  • Un octet sans caractère est nommé, avec sa ligne (#1887).
  • 17 machines, un litige: M-2206.

Essayer

Le scénario se rejoue en local.

Chaque étape est publiée avec sa sortie.

Ce scénario tourne sur lumnik Open, gratuit et open source.

Essayer lumnik Open →