Skip to content
Snippets Groups Projects
Commit d4c7842d authored by mael.theuliere's avatar mael.theuliere
Browse files

ajout version dbi des connections

parent 955520e4
Branches
Tags
No related merge requests found
...@@ -2,12 +2,17 @@ ...@@ -2,12 +2,17 @@
export(check_server_renviron) export(check_server_renviron)
export(connect_to_db) export(connect_to_db)
export(connect_to_dbi)
export(get_data) export(get_data)
export(get_data_dbi)
export(list_schemas) export(list_schemas)
export(list_tables) export(list_tables)
export(post_data) export(post_data)
export(post_data_dbi)
importFrom(DBI,Id)
importFrom(DBI,dbConnect) importFrom(DBI,dbConnect)
importFrom(DBI,dbDriver) importFrom(DBI,dbDriver)
importFrom(DBI,dbExecute)
importFrom(DBI,dbGetQuery) importFrom(DBI,dbGetQuery)
importFrom(DBI,dbReadTable) importFrom(DBI,dbReadTable)
importFrom(DBI,dbWriteTable) importFrom(DBI,dbWriteTable)
......
...@@ -31,3 +31,25 @@ connect_to_db <- function(db="datamart", ...@@ -31,3 +31,25 @@ connect_to_db <- function(db="datamart",
) )
return(con) return(con)
} }
#' Connection au serveur datamart
#'
#' @return Un connecteur con
#' @export
#'
#' @examples
#' \dontrun{
#' connect_to_dbi()
#' }
#' @importFrom DBI dbDriver dbConnect
#' @importFrom odbc odbc
#' @importFrom glue glue
connect_to_dbi <- function(){
con <- DBI::dbConnect(odbc::odbc(),
.connection_string = glue::glue("Driver={PostgreSQL Unicode(x64)};Server=$Sys.getenv('server')$;\nDatabase=datamart;\nUID=does;\nPWD=$Sys.getenv('pwd_does')$;\nPort=$Sys.getenv('port')$;",.open = "$",.close="$"),timeout = 10,
encoding = "UTF-8")
DBI::dbSendQuery(con,"SET client_encoding TO 'windows-1252'")
return(con)
}
...@@ -19,3 +19,31 @@ get_data <- function(con = NULL, ...@@ -19,3 +19,31 @@ get_data <- function(con = NULL,
data <- DBI::dbReadTable(con, c(schema,table)) data <- DBI::dbReadTable(con, c(schema,table))
return(data) return(data)
} }
#' import d'un dataset du serveur
#'
#' @param con Le connecteur de classe PosgreSQLConnection.
#' @param schema Le nom du schema sur le serveur de données.
#' @param table Le nom de la table sur le serveur de données.
#' @importFrom attempt stop_if
#' @importFrom DBI dbReadTable Id dbExecute
#'
#' @return un dataframe
#' @export
#'
#' @importFrom DBI dbReadTable Id
get_data_dbi <- function(con = NULL,
schema = NULL,
table = NULL) {
attempt::stop_if(con, is.null, msg = "con n'est pas renseign\u00e9")
attempt::stop_if(schema, is.null, msg = "schema n'est pas renseign\u00e9")
attempt::stop_if(table, is.null, msg = "table n'est pas renseign\u00e9")
DBI::dbSendQuery(con,"SET client_encoding TO 'windows-1252'")
tbl <- DBI::Id(schema = schema, table = table)
data <- DBI::dbReadTable(con, tbl)
return(data)
}
...@@ -31,3 +31,38 @@ post_data <- function(con, ...@@ -31,3 +31,38 @@ post_data <- function(con,
return(invisible(NULL)) return(invisible(NULL))
} }
#' Chargement d'un dataset sur le serveur en dbi
#'
#' @param con Le connecteur de classe PosgreSQLConnection.
#' @param data Un dataframe a importer.
#' @param schema Le nom du schéma sur le serveur de données.
#' @param table Le nom de la table sur le serveur de données.
#' @param overwrite TRUE si on veut écraser le fichier déjà présent.
#' @importFrom attempt stop_if stop_if_not
#' @importFrom DBI dbWriteTable Id dbSendQuery
#' @importFrom glue glue
#'
#' @return la fonction lance le chargement du dataset en Rdata et son écriture sur le serveur
#' @export
#'
#' @importFrom DBI dbWriteTable Id
post_data_dbi <- function(con = NULL,
data = NULL,
schema = NULL,
table = NULL,
overwrite = FALSE) {
attempt::stop_if(con, is.null, msg = "con n'est pas renseign\u00e9")
attempt::stop_if_not(deparse(substitute(con)), exists, msg = glue::glue("le connecteur {con} n'exsiste pas"))
attempt::stop_if(data, is.null, msg = "data n'est pas renseign\u00e9")
attempt::stop_if_not(data, is.data.frame, msg = glue::glue("le dataframe {data} n'exsiste pas"))
attempt::stop_if(schema, is.null, msg = "schema n'est pas renseign\u00e9")
attempt::stop_if(table, is.null, msg = "table n'est pas renseign\u00e9")
attempt::stop_if_not(schema, ~ .x %in% list_schemas(con), msg = glue::glue("le schema {schema} n'existe pas"))
attempt::stop_if(table %in% list_tables(con,schema) & !overwrite, msg = glue::glue("La table {table} existe d\u00e9j\u00e0 sur le schema {schema} et le param\u00e8 tre overwrite est \u00e0 FALSE"))
DBI::dbSendQuery(con,"SET client_encoding TO 'windows-1252'")
tbl <- DBI::Id(schema = schema, table = table)
DBI::dbWriteTable(con, tbl, data,overwrite = overwrite )
return(invisible(NULL))
}
...@@ -2,10 +2,10 @@ ...@@ -2,10 +2,10 @@
% Please edit documentation in R/check_server_renviron.R % Please edit documentation in R/check_server_renviron.R
\name{check_server_renviron} \name{check_server_renviron}
\alias{check_server_renviron} \alias{check_server_renviron}
\title{vérifie si les variables système sont bien activées via .Renviron} \title{Vérifie si les variables système sont bien activées via .Renviron.}
\usage{ \usage{
check_server_renviron() check_server_renviron()
} }
\description{ \description{
vérifie si les variables système sont bien activées via .Renviron Vérifie si les variables système sont bien activées via .Renviron.
} }
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/connect_to_db.R
\name{connect_to_dbi}
\alias{connect_to_dbi}
\title{Connection au serveur datamart}
\usage{
connect_to_dbi()
}
\value{
Un connecteur con
}
\description{
Connection au serveur datamart
}
\examples{
\dontrun{
connect_to_dbi()
}
}
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/get_data.R
\name{get_data_dbi}
\alias{get_data_dbi}
\title{import d'un dataset du serveur}
\usage{
get_data_dbi(con = NULL, schema = NULL, table = NULL)
}
\arguments{
\item{con}{Le connecteur de classe PosgreSQLConnection.}
\item{schema}{Le nom du schema sur le serveur de données.}
\item{table}{Le nom de la table sur le serveur de données.}
}
\value{
un dataframe
}
\description{
import d'un dataset du serveur
}
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/post_data.R
\name{post_data_dbi}
\alias{post_data_dbi}
\title{Chargement d'un dataset sur le serveur en dbi}
\usage{
post_data_dbi(
con = NULL,
data = NULL,
schema = NULL,
table = NULL,
overwrite = FALSE
)
}
\arguments{
\item{con}{Le connecteur de classe PosgreSQLConnection.}
\item{data}{Un dataframe a importer.}
\item{schema}{Le nom du schéma sur le serveur de données.}
\item{table}{Le nom de la table sur le serveur de données.}
\item{overwrite}{TRUE si on veut écraser le fichier déjà présent.}
}
\value{
la fonction lance le chargement du dataset en Rdata et son écriture sur le serveur
}
\description{
Chargement d'un dataset sur le serveur en dbi
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment