Skip to main content
czerasz.com: notes
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

DuckDB

Download

version='1.2.0'
file='duckdb_cli-linux-amd64.zip'
curl -sSLO "https://github.com/duckdb/duckdb/releases/download/v${version}/${file}"
checksum='d94b4497338b628dd9de64d242f4977058aa1a84a2fba2436e84adf4a8fd0716b3ab60eba53525dc16d3aa28c443271f1a12984637301ed51377dad8ea867843'
echo "${checksum}  ${file}" | sha512sum -c
unzip "${file}"
rm "${file}"
mkdir bin
mv duckdb bin/duckdb

Starting

  • start database in persistent mode

    ./bin/duckdb sample.duckdb
    
  • start database in in-memory mode

    ./bin/duckdb :memory:
    

    or just

    ./bin/duckdb
    

SQL Examples

SELECT 'mandarin' as duck;

-- show available (not installed) extensions
FROM duckdb_extensions()
WHERE installed != true
;

-- install aws extension
INSTALL aws;

-- show aws extension details
FROM duckdb_extensions() WHERE extension_name = 'aws';

LOAD aws;

-- store remote data in local table
CREATE TABLE hacker_news_sample
AS SELECT * FROM 's3://us-prd-motherduck-open—datasets/hacker_news/parquet/hacker_news_2021_2022.parquet'
LIMIT 5;

SHOW DATABASES;
SHOW ALL TABLES;

-- perist to disk
ATTACH 'my_hacker_news_stats.duckdb';

-- set default selected database
USE my_hacker_news_stats;

-- turn on timer
.timer on


ATTACH 'extensions.duckdb';
CREATE TABLE extensions.extensions AS SELECT * FROM duckdb_extensions();

-- display current output mode
.mode

-- save output as markdown
.mode markdown
.output extensions.md
SELECT * FROM duckdb_extensions();

-- set output back to stdout
.output stdout

-- export data to CSV
COPY (SELECT * FROM hacker_news_stats.top_domains) TO 'top_domains.csv'

--
CREATE SECRET aws_secret (
  TYPE S3,
  PROVIDER CREDENTIAL_CHAIN
)

-- show available secrets
FROM duckdb_secrets();