-
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.outputFileName
mais 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 àtrue
si on doit vider la table avant import -
history
: définir àtrue
si 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