| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente |
| database:import-formats [2026/06/17 08:16] – [Principe de la procédure d'import initial] jpmilcent | database:import-formats [2026/08/21 07:08] (Version actuelle) – [Principe de la procédure de mise à jour] jpmilcent |
|---|
| * //occtax.csv// : les données d'observation à intégrer au module OccTax. Les données seront automatiquement répercutées dans le module Synthèse via des //triggers// présents dans la base de données. | * //occtax.csv// : les données d'observation à intégrer au module OccTax. Les données seront automatiquement répercutées dans le module Synthèse via des //triggers// présents dans la base de données. |
| * //validation.csv// : permet de fournir les statuts de validations actuel et passés des observations. Généralement, utilisé en complément du fichier //occtax.csv//. | * //validation.csv// : permet de fournir les statuts de validations actuel et passés des observations. Généralement, utilisé en complément du fichier //occtax.csv//. |
| * //additional_data.csv// : contient la description des champs additionnels présents dans les différents fichiers à importer. uniquement pour la documentation. Non utilisé. | * //meta_additional_data.csv// : contient la description des champs additionnels présents dans les différents fichiers à importer. uniquement pour la documentation. Non utilisé. |
| | |
| ==== Principe de la procédure d'import initial ==== | ==== Principe de la procédure d'import initial ==== |
| * les actions suivantes //parser// le fichier CSV, //copier// le CSV préparé dans la base, //insérer// les lignes dont //meta_last_action// vaut "I" et //mettre à jour// les lignes dont //meta_last_action// vaut "U" sur les entités dans l'ordre suivant : ''source'', ''organism'', ''user'', ''acquistion_framework'', ''dataset'', ''synthese''. | * les actions suivantes //parser// le fichier CSV, //copier// le CSV préparé dans la base, //insérer// les lignes dont //meta_last_action// vaut "I" et //mettre à jour// les lignes dont //meta_last_action// vaut "U" sur les entités dans l'ordre suivant : ''source'', ''organism'', ''user'', ''acquistion_framework'', ''dataset'', ''synthese''. |
| * enfin, il est possible de //supprimer// les lignes dont //meta_last_action// vaut "D" sur les entités dans l'ordre suivant : ''synthese'', ''dataset'', ''acquistion_framework'', ''user'', ''organism'', ''source''. | * enfin, il est possible de //supprimer// les lignes dont //meta_last_action// vaut "D" sur les entités dans l'ordre suivant : ''synthese'', ''dataset'', ''acquistion_framework'', ''user'', ''organism'', ''source''. |
| | |
| | === Gestion du différentiel dans la base des locale d'un administrateur de données === |
| | |
| | Il faut gérer un différentiel par rapport à la date du dernier export vers le SINP. |
| | |
| | Seules les données ajoutées, modifiées ou supprimées depuis le dernier export doivent être transmises. |
| | |
| | Pour les données ajoutées : |
| | * ''meta_last_acton'' doit prendre la valeur "''I''" |
| | * ''meta_create_date'' doit indiquer la date et heure de création de l'enregistrement. |
| | |
| | Pour les données modifiées (1 ou plusieurs fois) : |
| | * ''meta_last_action'' doit prendre la valeur "''U''" |
| | * ''meta_update_date'' doit indiquer la date et heure de **la dernière** modification depuis l'export précédent |
| | |
| | Pour les données supprimées : |
| | * ''meta_last_action'' doit prendre la valeur "''D''". |
| | |
| | Cas particuliers : |
| | * une donnée ajoutée (et éventuellement modifiée), puis supprimée depuis le dernier export n'est pas à transmettre ; |
| | * une donnée ajoutée puis modifiée doit être transmise avec ''meta_last_action'' = "''I''" (ajout) et non "''U''" (mise à jour). |
| |
| ==== Format du fichier des métadonnées de l'archive "meta_archive.ini" ==== | ==== Format du fichier des métadonnées de l'archive "meta_archive.ini" ==== |
| * avoir un nom au singulier, en minuscules et avec des underscores comme séparateur de mots. | * avoir un nom au singulier, en minuscules et avec des underscores comme séparateur de mots. |
| * avoir l'extension //.csv// | * avoir l'extension //.csv// |
| * avoir un des noms suivant : //synthese.csv//, //source.csv//, //dataset.csv//, //acquisition_framework.csv//, //organism.csv// ou //user.csv// | * avoir un des noms suivant : //synthese.csv//, //source.csv//, //dataset.csv//, //acquisition_framework.csv//, //organism.csv//, //user.csv//, //occtax.csv//, //validation.csv// ou //meta_additional_data.csv//. |
| |
| Le format CSV (en réalité plutôt [[https://fr.wikipedia.org/wiki/Tabulation-separated_values|TSV]]) qu'ils contiendront devra respecter les règles suivantes : | Le format CSV (en réalité plutôt [[https://fr.wikipedia.org/wiki/Tabulation-separated_values|TSV]]) qu'ils contiendront devra respecter les règles suivantes : |
| * si nécessaire utiliser le caractère **guillemet** (") pour préfixer et suffixer une valeur de champ | * si nécessaire utiliser le caractère **guillemet** (") pour préfixer et suffixer une valeur de champ |
| * si nécessaire utiliser **deux guillemets** successifs ("") pour échapper le caractère guillemet dans une valeur de champ préfixé et suffixé par des guillemets. | * si nécessaire utiliser **deux guillemets** successifs ("") pour échapper le caractère guillemet dans une valeur de champ préfixé et suffixé par des guillemets. |
| | * respecter l'ordre des champs décrits dans cette documentation |
| | * si possible fournir les fichiers avec l'ensemble des champs décrits même s'ils doivent contenir des valeurs nulles |
| | |
| Il faut vous assurer d'avoir supprimé, remplacé ou protégé les caractères suivant dans les valeurs des champs : | Il faut vous assurer d'avoir supprimé, remplacé ou protégé les caractères suivant dans les valeurs des champs : |
| * si les champs ne sont pas valables pour toutes les lignes, 1 seule possibilité : | * si les champs ne sont pas valables pour toutes les lignes, 1 seule possibilité : |
| * utiliser le champ //additional_data// dont les valeurs doivent être [[https://www.json.org/json-fr.html|au format JSON]] et [[https://jsonformatter.curiousconcept.com/|être valide]]. Le JSON en question devra correspondre à un objet d'un seul niveau avec attribut et valeur. Ex. : <code json>{"attribut1": "valeur1", "attribut2": "valeur2"}</code> | * utiliser le champ //additional_data// dont les valeurs doivent être [[https://www.json.org/json-fr.html|au format JSON]] et [[https://jsonformatter.curiousconcept.com/|être valide]]. Le JSON en question devra correspondre à un objet d'un seul niveau avec attribut et valeur. Ex. : <code json>{"attribut1": "valeur1", "attribut2": "valeur2"}</code> |
| * si les champs sont valables pour toutes les lignes du fichier d'import, 2 possibilités : | * si les champs sont valables pour toutes les lignes du fichier d'import, <del>2</del> 1 possibilité<del>s</del> : |
| * ajouter des colonnes supplémentaires au fichier | |
| * utiliser le champ //additional_data// (voir ci-dessus) | * utiliser le champ //additional_data// (voir ci-dessus) |
| | * <del>ajouter des colonnes supplémentaires au fichier</del> : non implémenté ! |
| |
| Afin de respecter le standard, il est nécessaire de fournir les méta-données de ces champs additionnel en fournissant le fichier //meta_additional_data.csv// (voir META_ADDITIONAL_DATA). Ce fichier contient la descriptions des champs additionnels. | Afin de respecter le standard, il est nécessaire de fournir les méta-données de ces champs additionnel en fournissant le fichier //meta_additional_data.csv// (voir META_ADDITIONAL_DATA). Ce fichier contient la descriptions des champs additionnels. |
| |
| Pour faciliter l'intégration des données, l'utilisation du champ //additional_data// est conseillée.\\ | Pour permettre l'intégration des données, l'utilisation du champ //additional_data// est nécessaire car la possibilité d'ajouter des colonnes supplémentaires aux fichiers CSV n'est pas implémentée.\\ |
| Les champs additionnels ne seront pas forcément traités pour toutes les ressources. Seuls les champs de la ressource SYNTHESE seront transmis au niveau national. | Les champs additionnels ne seront pas forcément traités pour toutes les ressources. Seuls les champs de la ressource SYNTHESE seront transmis au niveau national. |
| |
| |
| ==== Évolutions ==== | ==== Évolutions ==== |
| | * 2026-06-17 : |
| | * Ajout des statuts des différents fichiers. |
| | * Ajout de complément sur le format des fichiers CSV attendus. |
| | * Mise à jour des textes introductifs. |
| * 2026-04-02 : | * 2026-04-02 : |
| * Utilisation de ''VARCHAR(50)'' pour tous les champs ''code_nomenclature_...'' de SYNTHESE. | * Utilisation de ''VARCHAR(50)'' pour tous les champs ''code_nomenclature_...'' de SYNTHESE. |
| | * 2026-03-13 : |
| | * Ajout du format VALIDATION. Nécessaire pour intégrer un historique des validations à la Synthese ou dans le cadre de l'utilisation du format OCCTAX. |
| * 2025-04-30 : | * 2025-04-30 : |
| * Ajout du format OccTax supporté pour les ajouts uniquement. Non nécessaire pour l'instant dans le cadre des SINP. | * Ajout du format OCCTAX supporté pour les ajouts uniquement. Non nécessaire pour l'instant dans le cadre des SINP. |
| * 2024-10-23 : | * 2024-10-23 : |
| * Nous privilégions maintenant l'utilisation des UUID comme identifiant de lien entre les ressources à la place des codes ou noms. | * Nous privilégions maintenant l'utilisation des UUID comme identifiant de lien entre les ressources à la place des codes ou noms. |