Tip
If you already have a DuckDB Quack server instance running, skip the steps to set up DuckDB.
-
Ensure the native Arrow GLib and ADBC GLib libraries required by
red-adbcare installed and discoverable. Ifbundle installreports missingarrow,arrow-glib, oradbc-glib, use the platform-specific commands below.macOS with Homebrew
brew install apache-arrow-glib apache-arrow-adbc-glib
Debian/Ubuntu
sudo apt install libarrow-glib-dev libadbc-glib-dev
RHEL-compatible distributions
sudo dnf install arrow-glib-devel adbc-glib-devel
Windows with RubyInstaller/MSYS2 UCRT64
pacman -S --needed mingw-w64-ucrt-x86_64-arrow mingw-w64-ucrt-x86_64-arrow-adbc-glib
If you use a different MSYS2 environment, adjust the package prefix to match it; for example, use
mingw-w64-x86_64-*from the MINGW64 shell. -
Install Ruby dependencies:
bundle install
If you have multiple Ruby installations, ensure
rubyandbundleresolve to the same installation before running this command.
-
Start the DuckDB CLI:
duckdb
-
Create a table:
CREATE TABLE penguins AS FROM read_csv('https://blobs.duckdb.org/data/penguins.csv', nullstr = 'NA');
-
Start a server from the DuckDB session:
CALL quack_serve('quack:localhost');Note the
auth_tokenvalue that DuckDB prints.
-
Install the Quack ADBC driver:
dbc install --level user --pre quack
-
Customize the Ruby script
main.rbas needed- Change the
uriconnection argument- Replace
YOUR_AUTH_TOKENwith theauth_tokenprinted by DuckDB - Change the host and port if applicable
- Replace
- If you changed which database you're connecting to, also change the SQL SELECT statement in
connection.query()
- Change the
-
Run the Ruby script:
bundle exec ruby main.rb
If you started a DuckDB server, exit the DuckDB CLI:
.exit