DuckDB
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
-
start database in persistent mode
./bin/duckdb sample.duckdb -
start database in in-memory mode
./bin/duckdb :memory:or just
./bin/duckdb
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();