Actualiser les lots de données suivants dans la base de données PostgreSQL de la plate-forme SIGLoire :
n_commune_ign_r52n_departement_ign_r52n_epci_zsup_r52 ?n_region_ign_r52library(datalibaba)
library(yaml)
À faire impérativement : configurer ou vérifier les paramètres du fichier config.yml avant chargement.
Les paramètres suivants sont ensuite récupérés :
referentiels et si_eau# Charger le fichier YAML
config <- yaml::read_yaml("../config.yml")
# Récupérer les variables
database <- config$database
schema_name <- config$schema_name
role <- config$role
emprise <- config$emprise
Récupération du mois et de l’année de l’édition d’ADMIN EXPRESS téléchargée à partir du nom du fichier GPKG :
# Extraire la date après '-ED' dans le nom de fichier
date_part <- sub(".*-ED([0-9]{4}-[0-9]{2}-[0-9]{2})\\.gpkg$", "\\1",
basename(fichier_gpkg))
# Définir la date
date <- lubridate::ymd(date_part)
# Extraire le mois et l'année
edition <- format(date, "%B %Y")
# Liste des entités concernées
entities <- c("commune", "departement", "epci", "region")
# Liste pour stocker les dataframes
tables_list <- list()
for (entity in entities) {
table_name <- paste0("n_", entity, "_exp_", emprise)
nom_var <- paste0("n_", entity, "_exp_", emprise)
tryCatch({
# Filtrage dynamique avec .data[[...]] et affectation dans l'environnement global
df <- datalibaba::importer_data(
table = table_name,
schema = schema_name,
db = database,
user = role)
# Stockage dans la liste sous le nom final
tables_list[[nom_var]] <- df
# Création en objet dans l’environnement global
assign(nom_var, df, envir = .GlobalEnv)
message(sprintf("DataFrame créé : %s", nom_var))
},
error = function(e) {
message(sprintf("Erreur lors du chargement ou filtrage de la table '%s' : %s",
table_name, e$message))
})
}
@todo : - utiliser l’option truncate du package datalibaba pour mettre à jour les données sans toucher à la structure des tables - ajouter une étape intermédiaire pour adapter les données de la base DREAL (ADMIN EXPRESS v4)