R Under development (unstable) (2025-09-04 r88794 ucrt) -- "Unsuffered Consequences" Copyright (C) 2025 The R Foundation for Statistical Computing Platform: x86_64-w64-mingw32/x64 R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > library(bcputility) > # DEVELOPERS ONLY > # This is provided as a convenience to set up a testing environment for those > # who wish to modify. This only needs to be run once for setting up the > # required tables and schema in a SQL Server instance. Set the environment > # variables MSSQL_SERVER and MSSQL_DB or modify the `makeConnectArgs` function > # below. It is best to `source` this file from the package home directory. > > # Writes the data to SQL Server if TRUE > initDB <- FALSE > # This should never need to be TRUE as the internal R data is already contained > # in the package. > initRData <- FALSE > if (identical(Sys.getenv("NOT_CRAN"), "true")) { + initTestData <- function(connectargs, initDB = initDB, + initRData = initRData) { + # create sample datasets + set.seed(11) + n <- 100000 + importTable <- data.frame( + int = sample(x = seq(1L, 10000L, 1L), size = n, replace = TRUE), + numeric = sample(x = seq(0, 1, length.out = n / 100), size = n, + replace = TRUE), + character = sample(x = state.abb, size = n, replace = TRUE), + factor = sample(x = factor(x = month.abb, levels = month.abb), + size = n, replace = TRUE), + logical = sample(x = c(TRUE, FALSE), size = n, replace = TRUE), + date = sample(x = seq(as.Date('2022-01-01'), as.Date('2022-12-31'), + by = 'days'), size = n, replace = TRUE), + datetime = sample(x = seq(as.POSIXct('2022-01-01 00:00:00'), + as.POSIXct('2022-12-31 23:59:59'), by = 'min'), size = n, + replace = TRUE) + ) + exportTable <- importTable[seq(1L, 10000L, 1L), ] + sfTable <- sf::st_read(system.file(package = 'sf', 'gpkg/nc.gpkg'), + quiet = TRUE) + sfTable <- sfTable[sample.int(nrow(sfTable), 10000, replace = TRUE), ] + if (isTRUE(initDB)) { + # create init datasets for testing against + bcpImport(x = importTable, connectargs = connectArgs, + table = 'importTableInit', overwrite = TRUE, stdout = FALSE) + bcpImport(x = exportTable, connectargs = connectArgs, + table = 'exportTableInit', overwrite = TRUE, stdout = FALSE) + # write spatial data + bcpImport(x = sfTable, connectargs = connectArgs, + table = 'sfTableGeomInit', overwrite = TRUE, stdout = FALSE) + bcpImport(x = sfTable, connectargs = connectArgs, + table = 'sfTableGeogInit', overwrite = TRUE, stdout = FALSE, + spatialtype = 'geography') + # create "test" schema + sqlcmdArgs <- append( + bcputility:::mapConnectArgs(connectargs = connectArgs, + utility = 'sqlcmd'), values = list('-Q', + shQuote("IF NOT EXISTS (SELECT * FROM sys.schemas WHERE name = 'test') + BEGIN + EXEC('CREATE SCHEMA test;') + END"))) + system2(command = bcputility:::findUtility('sqlcmd'), args = sqlcmdArgs) + } + if (isTRUE(initDB)) { + # create internal data + exportTableFile <- tempfile('exportTableInit', fileext = '.csv') + bcpExport(file = exportTableFile, connectargs = connectArgs, + table = 'exportTableInit', fieldterminator = ',', + stdout = FALSE + ) + .exportTableInit <- data.table::fread(exportTableFile) + queryTableFile <- tempfile('queryTableInit', fileext = '.csv') + query <- 'SELECT * FROM [dbo].[exportTableInit] WHERE int < 1000' + bcpExport(file = queryTableFile, connectargs = connectArgs, query = query, + fieldterminator = ',', stdout = FALSE + ) + .queryTableInit <- data.table::fread(queryTableFile) + save(.exportTableInit, .queryTableInit, + file = '../bcputility/R/sysdata.rda', + compress = 'bzip2') + } + } + # set up connnect args + server <- Sys.getenv("MSSQL_SERVER") + database <- Sys.getenv('MSSQL_DB') + connectArgs <- makeConnectArgs(server = server, database = database) + initTestData(connectargs = connectArgs, initDB = initDB, + initRData = initRData) + } > > proc.time() user system elapsed 0.21 0.07 0.26