| Title: | SQL Interface to 'Snowflake', 'Redshift', 'Postgres', 'SQLite', and 'DuckDB' | 
| Version: | 1.3.0 | 
| Maintainer: | Dani Mermelstein <dmermelstein@hey.com> | 
| Description: | Run 'SQL' queries across 'Snowflake', 'Amazon Redshift', 'PostgreSQL', 'SQLite', and 'DuckDB' from R with a single function. Optionally stream and cache large query results to a local 'DuckDB' database for efficient work with larger-than-memory datasets. | 
| URL: | https://github.com/mermelstein/snowquery | 
| BugReports: | https://github.com/mermelstein/snowquery/issues | 
| Imports: | yaml, reticulate, RPostgres, RSQLite, DBI, duckdb, dplyr, dbplyr | 
| Encoding: | UTF-8 | 
| RoxygenNote: | 7.3.3 | 
| License: | GPL (≥ 3) | 
| NeedsCompilation: | no | 
| Packaged: | 2025-09-10 14:40:01 UTC; mermel | 
| Author: | Dani Mermelstein [aut, cre, cph] | 
| Repository: | CRAN | 
| Date/Publication: | 2025-09-10 15:20:02 UTC | 
snowquery: SQL Interface to 'Snowflake', 'Redshift', 'Postgres', 'SQLite', and 'DuckDB'
Description
Run 'SQL' queries across 'Snowflake', 'Amazon Redshift', 'PostgreSQL', 'SQLite', and 'DuckDB' from R with a single function. Optionally stream and cache large query results to a local 'DuckDB' database for efficient work with larger-than-memory datasets.
Author(s)
Maintainer: Dani Mermelstein dmermelstein@hey.com [copyright holder]
See Also
Useful links:
- Report bugs at https://github.com/mermelstein/snowquery/issues 
Cache a remote query result to a local DuckDB database
Description
Efficiently streams the result of a query from a remote source (Snowflake, Redshift, Postgres) to a local DuckDB file. This method is memory-efficient and suitable for very large query results as it streams data without loading the entire result set into R's memory.
Usage
.cache_query_result(
  source_conn_name,
  source_query,
  dest_table_name,
  overwrite = TRUE,
  config_path = "~/snowquery_creds.yaml"
)
Arguments
| source_conn_name | The name of the remote database connection in your snowquery_creds.yaml file. | 
| source_query | The SQL query to execute on the remote source. | 
| dest_table_name | The name of the table to be created in the local DuckDB database. | 
| overwrite | A boolean (TRUE/FALSE) to control whether to overwrite the destination table if it already exists. | 
| config_path | The path to your snowquery_creds.yaml file. | 
Value
Invisibly returns a confirmation message.
Query a database
Description
Run a SQL query on a Snowflake, Redshift or Postgres database and return the results as a data frame. See the snowquery README for more information on how to pass in your credentials.
Usage
queryDB(
  query,
  conn_name = "default",
  db_type = NULL,
  username = NULL,
  password = NULL,
  host = NULL,
  port = NULL,
  database = NULL,
  warehouse = NULL,
  account = NULL,
  role = NULL,
  sslmode = NULL,
  timeout = 15,
  cache_table_name = NULL,
  overwrite = TRUE
)
Arguments
| query | A string of the SQL query to execute | 
| conn_name | The name of the connection to use in snowquery_creds.yaml (e.g. "my_snowflake_dwh") | 
| db_type | The type of database to connect to (e.g. "snowflake", "redshift" or "postgres") | 
| username | The username to use for authentication | 
| password | The password to use for authentication | 
| host | The hostname or IP address of the database server | 
| port | The port number to use for the database connection | 
| database | The name of the database to connect to | 
| warehouse | Snowflake The name of the warehouse to use for the Snowflake connection | 
| account | Snowflake The name of the Snowflake account to connect to | 
| role | Snowflake The name of the role to use for the Snowflake connection | 
| sslmode | Whether to use sslmode for the postgres or redshift connection | 
| timeout | The number of seconds to wait for the database to connect successfully | 
| cache_table_name | The name of the table to create inside the DuckDB file. If provided, the query result is streamed directly to DuckDB and a confirmation message is returned instead of a data frame. | 
| overwrite | A boolean (TRUE/FALSE) to control whether to overwrite an existing table in the cache. | 
Value
A data frame containing the results of the query, or a confirmation message if cache_table_name is used.
Examples
## Not run: 
# Query the database and get a dataframe of results
result <- queryDB("SELECT * FROM my_table", conn_name='my_snowflake_dwh')
print(result)
## End(Not run)
## Not run: 
# Stream a large query result directly to the local DuckDB cache
queryDB("SELECT * FROM very_large_table",
        conn_name = 'my_snowflake_dwh',
        cache_table_name = 'large_table_local',
        overwrite = TRUE)
## End(Not run)