diff --git a/DESCRIPTION b/DESCRIPTION index 6ada618b777eb10230799a20c7ea713f99db062f..7c0e3b10ba1674e2b4214fbe5c72132ff05eb3e5 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -36,5 +36,5 @@ Imports: Encoding: UTF-8 LazyData: true Roxygen: list(markdown = TRUE) -RoxygenNote: 7.1.1 -URL:https://dreal-datalab.gitlab.io/datalibaba/index.html, https://gitlab.com/dreal-datalab/datalibaba +URL: https://dreal-datalab.gitlab.io/datalibaba/index.html, https://gitlab.com/dreal-datalab/datalibaba +RoxygenNote: 7.1.2 diff --git a/NAMESPACE b/NAMESPACE index 4c547ffc37898b193a86cdfb67b69ec4601f18b4..432161deb8167a9c9164fa18f6488582ed99388e 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -7,6 +7,7 @@ export(commenter_schema) export(commenter_table) export(connect_to_db) export(connect_to_dbi) +export(exporter_table_comments) export(get_cols_comment) export(get_data) export(get_data_dbi) @@ -44,6 +45,7 @@ importFrom(crayon,bold) importFrom(dplyr,across) importFrom(dplyr,all_of) importFrom(dplyr,arrange) +importFrom(dplyr,bind_rows) importFrom(dplyr,case_when) importFrom(dplyr,distinct) importFrom(dplyr,filter) @@ -86,3 +88,4 @@ importFrom(usethis,ui_done) importFrom(usethis,ui_info) importFrom(usethis,ui_oops) importFrom(usethis,ui_todo) +importFrom(utils,write.csv2) diff --git a/NEWS.md b/NEWS.md index de2525adccb662a7097e877d5d5408afe5a46936..86dc5b0b9c3a275b142bb4bef21f5a02c0848526 100644 --- a/NEWS.md +++ b/NEWS.md @@ -9,6 +9,7 @@ - ajout des fonctions `get_data()`, `get_data_dbi()`, `importer_data()` : Import d'un dataset du serveur. - ajout des fonctions `commenter_table()`, `commenter_schema()`, `commenter_champs()` et `post_dico_attr()` : Rédaction de commentaires descriptifs sur les schémas et les tables du serveur de données. - ajout des fonctions `get_table_comments()` et `transferer_table_comment()` : qui récupérent et transfèrent les commentaires descriptifs d'une table du serveur de données à une autre. +- ajout de la fonction `exporter_table_comments()` qui récupère le descriptif d'une table SGBD (commentaire de table et commentaires de champs) et les exporte dans un tableur csv. - ajout fonction `set_schema_rights()` qui affecte à une table les droits de lecture/écriture de son schéma. * Added a `NEWS.md` file to track changes to the package. diff --git a/R/commenter_champs.R b/R/commenter_champs.R index 6837ee9110ea4c2e5b0939384c1ad9b06bb42b43..61c6256a19cd4852989ad3150a92051a541810e3 100644 --- a/R/commenter_champs.R +++ b/R/commenter_champs.R @@ -77,7 +77,6 @@ commenter_champs <- function(comment = NULL, var = NULL, table = NULL, schema = #' } #' - post_dico_attr <- function(dico = NULL, table = NULL, schema = NULL, db = "public", user = "does", server = NULL) { # ouverture de la connexion avec DBI::dbDriver("PostgreSQL") @@ -137,7 +136,6 @@ post_dico_attr <- function(dico = NULL, table = NULL, schema = NULL, db = "publi #' @importFrom dplyr transmute #' @importFrom rlang .data #' - get_table_comment <- function(table = NULL, schema = NULL, db = "public", user = "does", server = NULL) { # ouverture de la connexion avec DBI::dbDriver("PostgreSQL") con <- connect_to_db(db = db, user = user, server = server) @@ -176,7 +174,6 @@ get_table_comment <- function(table = NULL, schema = NULL, db = "public", user = #' @importFrom DBI dbGetQuery #' @importFrom dplyr filter distinct #' @importFrom rlang .data - get_cols_comment <- function(table = NULL, schema = NULL, db = "public", user = "does", server = NULL) { # ouverture de la connexion avec DBI::dbDriver("PostgreSQL") @@ -208,7 +205,9 @@ get_cols_comment <- function(table = NULL, schema = NULL, db = "public", user = #' @param user : L'identifiant de l'utilisateur SGBD qui se connecte. #' @param server L'adresse ip du serveur, laisser à NULL pour utiliser le variable d'environnement du .Renviron. #' -#' @return les commentaires recherches dans un dataframe de 4 champs (nom_schema, nom_table, commentaire) et autant de lignes que de champs de la table commentes +#' @return les commentaires recherches dans un dataframe de 4 champs (nom_schema, nom_table, commentaire) et autant de lignes que de champs de la table commentes + 1 ligne pour la table +#' @importFrom DBI dbDisconnect +#' @importFrom dplyr bind_rows #' @export #' #' @examples @@ -216,6 +215,7 @@ get_cols_comment <- function(table = NULL, schema = NULL, db = "public", user = #' get_table_comments(table = "test_iris", schema = "public", db = "public", #' user = "does", server = "localhost") #'} + get_table_comments <- function(table = NULL, schema = NULL, db = "public", user = "does", server = NULL) { # ouverture de la connexion avec DBI::dbDriver("PostgreSQL") @@ -282,6 +282,34 @@ transferer_table_comments <- function(table_sce = NULL, schema_sce = NULL, db_sc return(invisible(NULL)) } +#' Recuperer les commentaires d'une table et de ses champs sur le SGBD et les exporter dans un fichier csv +#' +#' @param table Le nom de la table sur le SGBD dont on veut recuperer la description +#' @param schema : Le nom du schema qui contient la table dont on recherche le descriptif. +#' @param db : Le nom de la base qui contient la table dont on recherche le descriptif. +#' @param user : L'identifiant de l'utilisateur SGBD qui se connecte. +#' @param server L'adresse ip du serveur, laisser à NULL pour utiliser le variable d'environnement du .Renviron. +#' @param fichier L'adresse et le nom du fichier csv a creer, contenant le dictionnaire d'attributs et le commentaire de la tables a exporter. +#' @param import booleen, TRUE si on souhaite egalement charger la table dans l'environnement R (FALSE par defaut). +#' +#' @return les commentaires recherches dans un dataframe de 4 champs (nom_schema, nom_table, commentaire) et autant de lignes que de champs de la table commentes + 1 ligne pour le commentaire de table. +#' @importFrom utils write.csv2 +#' @export +#' +#' @examples +#' \dontrun{ +#' exporter_table_comments(table = "test_iris", schema = "public", db = "public", user = "does", +#' server = "localhost", fichier = "dico_iris.csv") +#'} + +exporter_table_comments <- function(table = NULL, schema = NULL, db = "public", user = "does", server = NULL, + fichier = "dico_var.csv", import = FALSE) { + a <- get_table_comments(table = table, schema = schema, db = db , user = user, server = server) + utils::write.csv2(x = a, file = fichier, na = "", row.names = FALSE, fileEncoding = "utf-8") + message("Export du dictionnaire des variables csv '", fichier, "'.") + if(import) {return(a)} + +} diff --git a/README.Rmd b/README.Rmd index 8c8a7bb6d534ecf0cf4248da340615b4212da786..d4059d47cbac931d4dda23669b9fdca809831d3e 100644 --- a/README.Rmd +++ b/README.Rmd @@ -129,3 +129,15 @@ Ce dataframe peut comprendre autant de lignes que d'attributs que l'on souhaite dico_iris <- data.frame(VAR = names(iris), VAR_LIB = paste("ceci est le libellé descriptif de", names(iris))) post_dico_attr(dico = dico_iris, table = "test_iris", schema = "public", db = "public", user = "does") ``` + +### Récupérer des commentaires de tables SGBD + +On peut récupérer les commentaires de tables chargées sur le SGBD dans RStudio : + +```{r, eval=FALSE} +dico_var <- get_table_comments(table = "test_iris", schema = "public", db = "public", user = "does") +``` + +On récupère à la fois les commentaires de champs et le commentaire de la table. + + diff --git a/README.md b/README.md index 00e3691076e7e172c9e0defcaaf0d00fc5b69fc7..cf23f1418b1c13ccc231c5f46389923433838215 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ con sera utilisé ensuite sur l’ensemble des autres fonctions pour dialoguer avec le serveur de base de données. ``` r -con <- connect_to_db(db="datamart", user="does") +con <- connect_to_db(db = "datamart", user = "does") ``` ### Lister les schémas @@ -50,7 +50,7 @@ list_schemas(con) ### Lister les tables d’un schéma -Ici on liste les table du schéma "public" +Ici on liste les table du schéma “public” ``` r list_tables(con, "public") @@ -82,7 +82,7 @@ La fonction `poster_data()` se veut plus complète : Le schéma spécifié en argument est créé s’il n’existe pas. ``` r -poster_data(data = iris, table = "test_iris", schema = "public", db = "production", user = "does", overwrite = TRUE) +poster_data(data = iris, table = "test_iris", schema = "public", db = "public", user = "does", overwrite = TRUE) ``` ### Télécharger une table @@ -106,7 +106,7 @@ de manière à retrouver le dataframe dans l’état précis où il était avant son versement au SGBD. ``` r -db_iris <- importer_data(table = "test_iris", schema = "public", db = "production", user = "does", overwrite = TRUE) +db_iris <- importer_data(table = "test_iris", schema = "public", db = "public", user = "does", overwrite = TRUE) ``` ### Poster des métadonnées en commentaires @@ -115,7 +115,7 @@ On peut commenter les tables chargées sur le SGBD depuis RStudio : ``` r commenter_table(comment = "Je suis un commentaire important sur la table test_iris.", table = "test_iris", - schema = "public", db = "production", user = "does") + schema = "public", db = "public", user = "does") ``` En dehors des informations spécifiées au niveau de l’argument *comment*, @@ -135,5 +135,17 @@ d’attributs que l’on souhaite documenter. ``` r dico_iris <- data.frame(VAR = names(iris), VAR_LIB = paste("ceci est le libellé descriptif de", names(iris))) -post_dico_attr(dico = dico_iris, table = "test_iris", schema = "public", db = "production", user = "does") +post_dico_attr(dico = dico_iris, table = "test_iris", schema = "public", db = "public", user = "does") ``` + +### Récupérer des commentaires de tables SGBD + +On peut récupérer les commentaires de tables chargées sur le SGBD dans +RStudio : + +``` r +dico_var <- get_table_comments(table = "test_iris", schema = "public", db = "public", user = "does") +``` + +On récupère à la fois les commentaires de champs et le commentaire de la +table. diff --git a/man/exporter_table_comments.Rd b/man/exporter_table_comments.Rd new file mode 100644 index 0000000000000000000000000000000000000000..7a83e555fc8858fcd4a2ca0ffa3d3b47221857a2 --- /dev/null +++ b/man/exporter_table_comments.Rd @@ -0,0 +1,43 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/commenter_champs.R +\name{exporter_table_comments} +\alias{exporter_table_comments} +\title{Recuperer les commentaires d'une table et de ses champs sur le SGBD et les exporter dans un fichier csv} +\usage{ +exporter_table_comments( + table = NULL, + schema = NULL, + db = "public", + user = "does", + server = NULL, + fichier = "dico_var.csv", + import = FALSE +) +} +\arguments{ +\item{table}{Le nom de la table sur le SGBD dont on veut recuperer la description} + +\item{schema}{: Le nom du schema qui contient la table dont on recherche le descriptif.} + +\item{db}{: Le nom de la base qui contient la table dont on recherche le descriptif.} + +\item{user}{: L'identifiant de l'utilisateur SGBD qui se connecte.} + +\item{server}{L'adresse ip du serveur, laisser à NULL pour utiliser le variable d'environnement du .Renviron.} + +\item{fichier}{L'adresse et le nom du fichier csv a creer, contenant le dictionnaire d'attributs et le commentaire de la tables a exporter.} + +\item{import}{booleen, TRUE si on souhaite egalement charger la table dans l'environnement R (FALSE par defaut).} +} +\value{ +les commentaires recherches dans un dataframe de 4 champs (nom_schema, nom_table, commentaire) et autant de lignes que de champs de la table commentes + 1 ligne pour le commentaire de table. +} +\description{ +Recuperer les commentaires d'une table et de ses champs sur le SGBD et les exporter dans un fichier csv +} +\examples{ +\dontrun{ +exporter_table_comments(table = "test_iris", schema = "public", db = "public", user = "does", + server = "localhost", fichier = "dico_iris.csv") +} +} diff --git a/man/get_table_comments.Rd b/man/get_table_comments.Rd index 601f9bec5c3d5cd9f8b60c15f3b961bab4bd53f3..c9705d21e9a1245594488871fef8b5d6d75dfa82 100644 --- a/man/get_table_comments.Rd +++ b/man/get_table_comments.Rd @@ -24,7 +24,7 @@ get_table_comments( \item{server}{L'adresse ip du serveur, laisser à NULL pour utiliser le variable d'environnement du .Renviron.} } \value{ -les commentaires recherches dans un dataframe de 4 champs (nom_schema, nom_table, commentaire) et autant de lignes que de champs de la table commentes +les commentaires recherches dans un dataframe de 4 champs (nom_schema, nom_table, commentaire) et autant de lignes que de champs de la table commentes + 1 ligne pour la table } \description{ Recuperer les commentaires d'une table et de ses champs sur le SGBD