Skip to content

Commit

Permalink
Update exportToSQLite.r (#187)
Browse files Browse the repository at this point in the history
  • Loading branch information
burrowse authored Feb 23, 2024
1 parent c298e20 commit 8ee3a77
Showing 1 changed file with 87 additions and 87 deletions.
174 changes: 87 additions & 87 deletions R/exportToSQLite.r
Original file line number Diff line number Diff line change
@@ -1,87 +1,87 @@
#' @title Export a CDM (Vocabulary and Event tables) into a SQLite Database.
#'
#' @description This function fetches (pruned) table data into R dataframes and writes them to a SQLite DB. (Eunomia support)
#'
#' @param connectionDetails An R object of type\cr\code{connectionDetails} created using the
#' function \code{createConnectionDetails} in the
#' \code{DatabaseConnector} package.
#'
#' @param cdmSchema The name of the database schema that contains the CDM.
#' Requires read and write permissions to this database. On SQL
#' Server, this should specifiy both the database and the schema,
#' so for example 'cdm_instance.dbo'.
#'
#' @param SQLiteDbName The name of the SQLite Database File.
#'
#'@export

exportToSQLite <-
function(connectionDetails,
cdmSchema,
SQLiteDbName = "cdm.sqlite")
{
conn <- DatabaseConnector::connect(connectionDetails)
sqliteCD <-
DatabaseConnector::createConnectionDetails(dbms = "sqlite", server = SQLiteDbName)
sqliteCon <- DatabaseConnector::connect(sqliteCD)

eventTable <- c(
"care_site",
"cdm_source",
"cohort",
"cohort_attribute",
"condition_era",
"condition_occurrence",
"cost",
"death",
"device_exposure",
"dose_era",
"drug_era",
"drug_exposure",
"fact_relationship",
"location",
"measurement",
"metadata",
"note",
"note_nlp",
"observation",
"observation_period",
"payer_plan_period",
"person",
"procedure_occurrence",
"provider",
"specimen",
"visit_detail",
"visit_occurrence"
)

vocabTable <- c(
"concept",
"concept_ancestor",
"concept_class",
"concept_relationship",
"concept_synonym",
"domain",
"drug_strength",
"relationship",
"source_to_concept_map",
"vocabulary"
)

for (tableName in c(eventTable, vocabTable)) {
sqlQuery <-
paste0("select * from ", paste0(cdmSchema, ".", tableName), ";")
translatedSql <-
SqlRender::translate(sqlQuery, targetDialect = connectionDetails$dbms)
writeLines(paste0("Fetching: ", tableName))
tableData <- DatabaseConnector::querySql(conn, translatedSql)
DatabaseConnector::insertTable(
connection = sqliteCon,
tableName = toupper(tableName),
data = tableData
)
}

DatabaseConnector::disconnect(conn)
DatabaseConnector::disconnect(sqliteCon)
}
#' @title Export a CDM (Vocabulary and Event tables) into a SQLite Database.
#'
#' @description This function fetches (pruned) table data into R dataframes and writes them to a SQLite DB. (Eunomia support)
#'
#' @param connectionDetails An R object of type\cr\code{connectionDetails} created using the
#' function \code{createConnectionDetails} in the
#' \code{DatabaseConnector} package.
#'
#' @param cdmSchema The name of the database schema that contains the CDM.
#' Requires read and write permissions to this database. On SQL
#' Server, this should specifiy both the database and the schema,
#' so for example 'cdm_instance.dbo'.
#'
#' @param SQLiteDbName The name of the SQLite Database File.
#'
#'@export

exportToSQLite <-
function(connectionDetails,
cdmSchema,
SQLiteDbName = "cdm.sqlite")
{
conn <- DatabaseConnector::connect(connectionDetails)
sqliteCD <-
DatabaseConnector::createConnectionDetails(dbms = "sqlite", server = SQLiteDbName)
sqliteCon <- DatabaseConnector::connect(sqliteCD)

eventTable <- c(
"care_site",
"cdm_source",
"cohort",
"cohort_attribute",
"condition_era",
"condition_occurrence",
"cost",
"death",
"device_exposure",
"dose_era",
"drug_era",
"drug_exposure",
"fact_relationship",
"location",
"measurement",
"metadata",
"note",
"note_nlp",
"observation",
"observation_period",
"payer_plan_period",
"person",
"procedure_occurrence",
"provider",
"specimen",
"visit_detail",
"visit_occurrence"
)

vocabTable <- c(
"concept",
"concept_ancestor",
"concept_class",
"concept_relationship",
"concept_synonym",
"domain",
"drug_strength",
"relationship",
"source_to_concept_map",
"vocabulary"
)

for (tableName in c(eventTable, vocabTable)) {
sqlQuery <-
paste0("select * from ", paste0(cdmSchema, ".", tableName), ";")
translatedSql <-
SqlRender::translate(sqlQuery, targetDialect = connectionDetails$dbms)
writeLines(paste0("Fetching: ", tableName))
tableData <- DatabaseConnector::querySql(conn, translatedSql)
DatabaseConnector::insertTable(
connection = sqliteCon,
tableName = toupper(tableName),
data = tableData
)
}

DatabaseConnector::disconnect(conn)
DatabaseConnector::disconnect(sqliteCon)
}

0 comments on commit 8ee3a77

Please sign in to comment.