Skip to contents

Provides a connection to a DuckDB database of the Star Wars data. Alternatively, you can use starwars_db() to manually connect to the database using DBI::dbConnect() and duckdb::duckdb().

Usage

starwars_connect(dbdir = ":memory:", ...)

starwars_disconnect(con)

starwars_db()

Arguments

dbdir

Location for database files. Should be a path to an existing directory in the file system. With the default (or ""), all data is kept in RAM.

...

Additional parameters passed to DBI::dbConnect()

con

A connection to the Star Wars database

Value

A connection to the Star Wars database, or the path to the database.

Functions

  • starwars_connect(): Connect to the DuckDB database

  • starwars_disconnect(): Disconnect from the DuckDB database

  • starwars_db(): Returns the path to the starwarsdb database

Examples

# Manually connect using {duckdb} and {DBI}
con <- DBI::dbConnect(
  duckdb::duckdb(),
  dbdir = starwars_db(),
  read_only = TRUE
)

if (requireNamespace("dplyr", quietly = TRUE)) {
  dplyr::tbl(con, "films")
}
#> # Source:   table<films> [?? x 6]
#> # Database: DuckDB v1.3.2 [unknown@Linux 6.11.0-1018-azure:R 4.5.1//tmp/Rtmpry1Dte/starwarsdb1f757ad17c23/starwars.duckdb]
#>   title                  episode_id opening_crawl director producer release_date
#>   <chr>                       <int> <chr>         <chr>    <chr>    <date>      
#> 1 A New Hope                      4 "It is a per… George … Gary Ku… 1977-05-25  
#> 2 The Empire Strikes Ba…          5 "It is a dar… Irvin K… Gary Ku… 1980-05-17  
#> 3 Return of the Jedi              6 "Luke Skywal… Richard… Howard … 1983-05-25  
#> 4 The Phantom Menace              1 "Turmoil has… George … Rick Mc… 1999-05-19  
#> 5 Attack of the Clones            2 "There is un… George … Rick Mc… 2002-05-16  
#> 6 Revenge of the Sith             3 "War! The Re… George … Rick Mc… 2005-05-19  

# Disconnect from that database (shutdown is specific to duckdb)
DBI::dbDisconnect(con, shutdown = TRUE)

# Or connect without worrying about connection details
con <- starwars_connect()

if (requireNamespace("dplyr", quietly = TRUE)) {
  dplyr::tbl(con, "films")
}
#> # Source:   table<films> [?? x 6]
#> # Database: DuckDB v1.3.2 [unknown@Linux 6.11.0-1018-azure:R 4.5.1/:memory:]
#>   title                  episode_id opening_crawl director producer release_date
#>   <chr>                       <int> <chr>         <chr>    <chr>    <date>      
#> 1 A New Hope                      4 "It is a per… George … Gary Ku… 1977-05-25  
#> 2 The Empire Strikes Ba…          5 "It is a dar… Irvin K… Gary Ku… 1980-05-17  
#> 3 Return of the Jedi              6 "Luke Skywal… Richard… Howard … 1983-05-25  
#> 4 The Phantom Menace              1 "Turmoil has… George … Rick Mc… 1999-05-19  
#> 5 Attack of the Clones            2 "There is un… George … Rick Mc… 2002-05-16  
#> 6 Revenge of the Sith             3 "War! The Re… George … Rick Mc… 2005-05-19  

# Similarly, disconnect quickly without worrying about duckdb arguments
starwars_disconnect(con)