-
Notifications
You must be signed in to change notification settings - Fork 3
Import d'une source de données
Le fichier de configuration de sources de données se trouve ici : src/server/src/shell/import/config.js
Pour chaque source de données on a 2 configurations distincte :
-
download: configuration pour le téléchargement des fichiers -
ingest: configuration pour l'insertion des données dans postgres
-
className: classe utilisé pour le traitement du téléchargement, pour un téléchargement sur minio utiliserMinioDownloader -
bucket: nom du dossier principal sur minio -
fileMatch: regex permettant d'identifier le fichier -
outputFileName: nom du fichier final après téléchargement
Il arrive que certains fichiers arrivent en format excel, dans ce cas il faut rajouter :
converter: CONVERTER_XLSX_TO_CSV
-
className: (optionnel) permet d'utiliser une classe custom pour modifier le fonctionnement par défaut de Ingestor.js -
table: nom de la table dans laquelle importer les données -
historyTable: (optionnel) certaines sources de données ont besoin d'une table pour construire un historique -
filename: fichier à importer, il s'agit du chemin complet, le nom du fichier doit être le même que la clédownload.outputFileNamemais précédé deFILES_FOLDER + '/' -
cols: liste des noms de colonnes finaux (ceux de la table en base de données) -
delimiter: séparateur du csv -
truncate: définir àtruesi on doit vider la table avant import -
history: définir àtruesi on veut se constituer un historique. Si oui il faut renseigner le champhistoryTable -
generateSiren: permet de générer automatiquement le numéro siren en fonction du siret (utile pour récupérer les données depuis une entreprise), nécessite un champ "siren" nullable dans la table -
date: permet d'indiquer la colonne qui sert de date afin de pouvoir mettre à jour la date de la source de données-
field: nom de la colonne -
format: format de la date (format Postgres)
-
Une classe Ingestor personnalisé doit étendre de la classe Ingestor. Il est possible de surcharger les méthodes de celles ci où alors d'utiliser des events afin de se pluguer avant ou après une actions, voici la liste des events :
- beforeTruncate
- afterTruncate
- beforePsqlCopy
- afterPsqlCopy
- beforeBuildHistory
- afterBuildHistory
- beforeSaveProcessDate
- afterSaveProcessDate
Et voici la liste des actions :
-
_truncateTable: vidage de la table sitruncate = true -
_runPsqlCopy: import du csv dans postgres -
_buildHistory: ajout des données dans l'historique sihistory = true -
_saveProcessDate: ajout de la date de la source de données à la tableimport_updates
Importer en production va déplacer le fichier dans le dossier archive de Minio, il est donc conseillé de tester l'import sur la preprod avant (et/ou sur sa machine) qui ne déplace pas le fichier.
2 commandes sont à lancer, en 1er lieu le téléchargement, puis ensuite l'import du fichier.
docker-compose exec server bash -c "yarn shell DownloadFile --id source-id"
où source-id est une des clé du tableau de config, par exemple interactions_pole_t
docker-compose exec server bash -c "yarn shell IngestFile --id source-id"
où source-id est une des clé du tableau de config, par exemple interactions_pole_t
docker exec server ash -c "NODE_ENV=production node ./shell/run.js DownloadFile --id source-id"
où source-id est une des clé du tableau de config, par exemple interactions_pole_t
docker exec server ash -c "NODE_ENV=production node ./shell/run.js IngestFile --id source-id"
où source-id est une des clé du tableau de config, par exemple interactions_pole_t