Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
database:exemple-import-synthese [2020/08/06 09:18] – [Exemple de code SQL d'import] jpmilcent | database:exemple-import-synthese [2020/08/06 15:19] (Version actuelle) – créée jpmilcent | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Exemple d' | + | ~~REDIRECT>database:import-formats~~ |
- | + | ||
- | ===== Processus d' | + | |
- | Pour importer les données (initialement ou en mise à jour), nous utiliserons des fichiers CSV associé à la commande //COPY//. | + | |
- | Ces fichiers CSV devront : | + | |
- | * être encodée en **UTF-8** | + | |
- | * utiliser une **tabulation** comme caractère de séparation des champs | + | |
- | * posséder une **première ligne d' | + | |
- | * utiliser les caractères **\N** pour indiquer une valeur nulle (//NULL//) pour un 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 ("" | + | |
- | + | ||
- | **TODO** : | + | |
- | * voir si on utilise plutôt un chaine vide sans guillemet pour indiquer une valeur NULL | + | |
- | * A priori, l' | + | |
- | ==== Import initial ==== | + | |
- | + | ||
- | * L' | + | |
- | * Nous utiliserons plusieurs fichiers CSV respectant tous le même format (voir ci-dessus) | + | |
- | * Le détail des différents fichiers (organism, acquistion_framework, | + | |
- | * Un seul fichier CSV est obligatoire // | + | |
- | * Dans ces fichiers CSV, nous utiliserons les codes alphanumériques des valeurs pour les champs devant contenir des **identifiant de nomenclatures**. Un script Python se connectant à la base de GeoNature permettra de récupérer l' | + | |
- | * Pour les lien avec les **organismes**, | + | |
- | * L' | + | |
- | * Un script Python sera chargé de vérifier les données CSV et de remplacer les différents codes standard par leur identifiant numérique spécifique à la base de données courante. | + | |
- | * Des scripts SQL se chargeront de désactiver triggers, contraintes... puis de les réactiver et exécuter globalement après la commande de //COPY// d' | + | |
- | * De cette façon, nous pouvons espérer intégrer jusqu' | + | |
- | ==== Mise à jour ==== | + | |
- | * Pour chaque mise à jour, nous devrons importer seulement un différentiel : | + | |
- | * le différentiel sera réalisé en local sur une machine disposant d' | + | |
- | * le nombre moins important de données nous permettra de réaliser rapidement la mise à jour de la table // | + | |
- | * le différentiel sera fournie au format CSV (voir ci-dessus) | + | |
- | * le fichier CSV sera importé dans une première table d' | + | |
- | * Nous procéderons pour l' | + | |
- | * Ajout des nouvelles observations | + | |
- | * Modification des observations existantes qui ont été modifiée depuis le dernier import | + | |
- | * Suppression des observations qui ne sont plus présente dans l' | + | |
- | * Pour réaliser le différentiel, | + | |
- | * La clé primaire des données d' | + | |
- | * Le champ "// | + | |
- | * Dans le cas des observations modifiées, le champ "// | + | |
- | * Pour les champs contenant des **identifiant de nomenclatures**, | + | |
- | * Pour les lien avec les **organismes**, | + | |
- | * L' | + | |
- | + | ||
- | ===== Format SYNTHESE d' | + | |
- | Permet de fournir les informations sur les observations. | + | |
- | Correspond à la table "// | + | |
- | + | ||
- | * unique_id_sinp [UUID] : UUID SINP s'il existe déjà dans les données sources. | + | |
- | * unique_id_sinp_grp [UUID] : UUID SINP du relevé s'il existe déjà dans les données sources. | + | |
- | * code_source [VARCHAR(255)] (=// | + | |
- | * entity_source_pk_value [VARCHAR(25)] : code alphanumérique correspondant à l' | + | |
- | * code_dataset [VARCHAR(25)] (=// | + | |
- | * code_nomenclature_geo_object_nature [VARCHAR(25)] (=// | + | |
- | * code_nomenclature_grp_typ [VARCHAR(25)] (=// | + | |
- | * code_nomenclature_obs_meth [VARCHAR(25)] (=// | + | |
- | * code_nomenclature_obs_technique [VARCHAR(25)] (=// | + | |
- | * code_nomenclature_bio_status [VARCHAR(25)] (=// | + | |
- | * code_nomenclature_bio_condition [VARCHAR(25)] (=// | + | |
- | * code_nomenclature_naturalness [VARCHAR(25)] (=// | + | |
- | * code_nomenclature_exist_proof [VARCHAR(25)] (=// | + | |
- | * code_nomenclature_valid_status [VARCHAR(25)] (=// | + | |
- | * code_nomenclature_diffusion_level [VARCHAR(25)] (=// | + | |
- | * code_nomenclature_life_stage [VARCHAR(25)] (=// | + | |
- | * code_nomenclature_sex [VARCHAR(25)] (=// | + | |
- | * code_nomenclature_obj_count [VARCHAR(25)] (=// | + | |
- | * code_nomenclature_type_count [VARCHAR(25)] (=// | + | |
- | * code_nomenclature_sensitivity [VARCHAR(25)] (=// | + | |
- | * code_nomenclature_observation_status [VARCHAR(25)] (=// | + | |
- | * code_nomenclature_blurring [VARCHAR(25)] (=// | + | |
- | * code_nomenclature_source_status [VARCHAR(25)] (=// | + | |
- | * code_nomenclature_info_geo_type [VARCHAR(25)] (=// | + | |
- | * reference_biblio [VARCHAR(255)] : | + | |
- | * count_min [INT(4)] : | + | |
- | * count_max [INT(4)] : | + | |
- | * cd_nom [INT(4)] : | + | |
- | * **nom_cite** [VARCHAR(1000)] : | + | |
- | * meta_v_taxref [VARCHAR(50)] : | + | |
- | * sample_number_proof [TEXT] : | + | |
- | * digital_proof [TEXT] : | + | |
- | * non_digital_proof [TEXT] : | + | |
- | * altitude_min [INT(4)] : | + | |
- | * altitude_max [INT(4)] : | + | |
- | * geom_4326 [geometry(Geometry, | + | |
- | * geom_point [geometry(Point, | + | |
- | * geom_local [geometry(Geometry, | + | |
- | * **date_min** [DATE(YYYY-MM-DD HH:MM:SS)] : | + | |
- | * **date_max** [DATE(YYYY-MM-DD HH:MM:SS)] : | + | |
- | * validator [VARCHAR(1000)] : | + | |
- | * validation_comment [TEXT] : | + | |
- | * observers [VARCHAR(1000)] : | + | |
- | * determiner [VARCHAR(1000)] : | + | |
- | * id_digitiser [INT(4)]: TODO voir si on garde ou pas ce champ. | + | |
- | * code_nomenclature_determination_method [VARCHAR(25)] (=// | + | |
- | * comment_context [TEXT] : | + | |
- | * comment_description [TEXT] : | + | |
- | * meta_validation_date [DATE(YYYY-MM-DD HH:MM:SS)] : date et heure de validation de l' | + | |
- | * **meta_create_date** [DATE(YYYY-MM-DD HH:MM:SS)] : date et heure de création de l' | + | |
- | * meta_update_date [DATE(YYYY-MM-DD HH:MM:SS)] : date et heure de mise à jour de l' | + | |
- | * **meta_last_action** [CHAR(1)] (=// | + | |
- | + | ||
- | ===== Format SOURCE d' | + | |
- | Permet de décrire la source des données.\\ | + | |
- | Correspond à la table "// | + | |
- | + | ||
- | * **name** [VARCHAR(255)] : correspond au champ "// | + | |
- | * desc [TEXT] : description de la source des données. Correspond au champ "// | + | |
- | * entity_source_pk_field [VARCHAR(255)] : nom du champ dans les données sources servant de clé primaire et dont la valeur est présente dans le champ "// | + | |
- | * url [VARCHAR(255)] : adresse web décrivant la source des données ou permettant d' | + | |
- | * **meta_create_date** [DATE YYYY-MM-DD HH:MM:SS] : date et heure de création de l' | + | |
- | * meta_update_date [DATE YYYY-MM-DD HH:MM:SS] : date et heure de mise à jour de l' | + | |
- | * **meta_last_action** [CHAR(1)] : permet d' | + | |
- | + | ||
- | ===== Format DATASET d' | + | |
- | Permet de fournir les informations sur les jeux de données.\\ | + | |
- | Correspond à la table "// | + | |
- | **NOTES :** pour éviter trop de complexité, | + | |
- | + | ||
- | * unique_id [UUID] (=// | + | |
- | * **code_acquisition_framework** [VARCHAR(255)] (=// | + | |
- | * **name** [VARCHAR(255)] (=// | + | |
- | * **shortname** [VACHAR(255)] (=// | + | |
- | * **desc** [TEXT] (=// | + | |
- | * code_nomenclature_data_type [VARCHAR(25)] (=// | + | |
- | * keywords [TEXT] | + | |
- | * marine_domain [BOOL] | + | |
- | * terrestrial_domain [BOOL] | + | |
- | * code_nomenclature_dataset_objectif [VARCHAR(25)] (=// | + | |
- | * bbox_west [FLOAT] | + | |
- | * bbox_est [FLOAT] | + | |
- | * bbox_south [FLOAT] | + | |
- | * bbox_north [FLOAT] | + | |
- | * code_nomenclature_collecting_method [VARCHAR(25)] (=// | + | |
- | * code_nomenclature_data_origin [VARCHAR(25)] (=// | + | |
- | * code_nomenclature_source_status [VARCHAR(25)] (=// | + | |
- | * code_nomenclature_resource_type [VARCHAR(25)] (=// | + | |
- | * cor_territory [TEXT(ARRAY-ARRAY)] : champ de type tableau de tableau de textes. Les tableaux de textes du plus bas niveau contiendront comme première valeur le code de nomenclature correspondant au champ "// | + | |
- | * cor_actors_organism [TEXT(ARRAY-ARRAY)] | + | |
- | * **meta_create_date** [DATE(YYYY-MM-DD HH:MM:SS)] : date et heure de création de l' | + | |
- | * meta_update_date [DATE(YYYY-MM-DD HH:MM:SS)] : date et heure de mise à jour de l' | + | |
- | * **meta_last_action** [CHAR(1)] : permet d' | + | |
- | + | ||
- | ===== Format de la table ACQUISITION_FRAMEWORK d' | + | |
- | Permet de fournir les informations sur les cadres d' | + | |
- | Correspond à la table "// | + | |
- | **NOTES :** pour éviter trop de complexité, | + | |
- | + | ||
- | * unique_id [UUID] (=// | + | |
- | * **name** [VARCHAR(255)] (=// | + | |
- | * **desc** [TEXT] (=// | + | |
- | * code_nomenclature_territorial_level [VARCHAR(25)] (=// | + | |
- | * territory_desc [TEXT] | + | |
- | * keywords [TEXT] | + | |
- | * code_nomenclature_financing_type [VARCHAR(25)] (=// | + | |
- | * target_description [TEXT] | + | |
- | * ecologic_or_geologic_target [TEXT] | + | |
- | * parent_code [VARCHAR(255)](=// | + | |
- | * is_parent [BOOL] | + | |
- | * **start_date** [DATE(YYYY-MM-DD)] (=// | + | |
- | * end_date [DATE(YYYY-MM-DD)] (=// | + | |
- | * cor_objectifs [TEXT(ARRAY)] : champ de type tableau de textes. Le tableau contiendra une succession | + | |
- | * cor_voletsinp [TEXT(ARRAY)] : champ de type tableau de textes. Le tableau contiendra une succession de codes de nomenclature correspondant au champ "// | + | |
- | * cor_actors_organism [TEXT(ARRAY-ARRAY)] : champ de type tableau de tableau de textes. Les tableaux de textes du plus bas niveau contiendront comme première valeur le nom de l' | + | |
- | * **meta_create_date** [DATE(YYYY-MM-DD HH:MM:SS)] : date et heure de création de l' | + | |
- | * meta_update_date [DATE(YYYY-MM-DD HH:MM:SS)] : date et heure de mise à jour de l' | + | |
- | * **meta_last_action** [CHAR(1)] : permet d' | + | |
- | ===== Format ORGANISM d' | + | |
- | Permet de fournir les informations sur les organismes liées aux jeux de données et cadres d' | + | |
- | Correspond à la table table "// | + | |
- | + | ||
- | * unique_id [UUID] : UUID de l' | + | |
- | * **name** [VARCHAR(100)] : correspond au champ " | + | |
- | * address [VARCHAR(128)] : correspond au champ " | + | |
- | * postal_code [VARCHAR(5)] : correspond au champ " | + | |
- | * city [VARCHAR(100)] : correspond au champ " | + | |
- | * phone [VARCHAR(14)] : correspond au champ " | + | |
- | * fax [VARCHAR(14)] : correspond au champ " | + | |
- | * email [VARCHAR(100)] : correspond au champ " | + | |
- | * url [VARCHAR(255)] : correspond au champ " | + | |
- | * logo_url [VARCHAR(255)] : correspond au champ " | + | |
- | * **meta_create_date** [DATE(YYYY-MM-DD HH:MM:SS)] : date et heure de création de l' | + | |
- | * meta_update_date [DATE(YYYY-MM-DD HH:MM:SS)] : date et heure de mise à jour de l' | + | |
- | * **meta_last_action** [CHAR(1)] : permet d' | + |