why?
主要是特别快
-
嵌入式,不需要服务器,使用超级方便
-
扩展机制灵活,可以直接读取CSV、JSON、Parquet等文件
-
采用列式存储(用于高效聚合)及向量化处理(用于提高性能)功能
1.下载
https://github.com/duckdb/duckdb/releases
duckdb_cli-windows-amd64.zip
2. 安装扩展和使用
2.1 直接使用命令行
D:\soft\pgsql>duckdb.exe
v1.1.0 fa5c2fe15f
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
安装扩展:
postgres 扩展 PostgreSQL Extension – DuckDB
mysql 扩展 MySQL Extension – DuckDB
下边以 postgres 扩展 为例:
-- 安装扩展 postgres 扩展
INSTALL postgres;
-- duckdb 会默认下载扩展并安装在
-- C:\Users\xueji\.duckdb\extensions\v1.1.0\windows_amd64
-- 加载扩展
LOAD postgres;
-- 查询是否安装扩展 注意【installed=true】
SELECT extension_name, installed, description FROM duckdb_extensions();
SELECT extension_name, installed FROM duckdb_extensions() where installed=true;
┌──────────────────┬───────────┐
│ extension_name │ installed │
│ varchar │ boolean │
├──────────────────┼───────────┤
│ autocomplete │ true │
│ fts │ true │
│ icu │ true │
│ json │ true │
│ parquet │ true │
│ postgres_scanner │ true │
│ shell │ true │
│ tpch │ true │
└──────────────────┴───────────┘
-- 连接到postgres
ATTACH 'dbname=postgres user=postgres password=123456 host=127.0.0.1 port=5433' AS db (TYPE POSTGRES, SCHEMA 'public');
-- 显示所有数据库 https://duckdb.org/docs/configuration/pragmas.html
PRAGMA database_list;
┌───────┬─────────┬──────────────────────────────────────────────────────────────────────────┐
│ seq │ name │ file │
│ int64 │ varchar │ varchar │
├───────┼─────────┼──────────────────────────────────────────────────────────────────────────┤
│ 1148 │ memory │ │
│ 2114 │ db │ dbname=postgres user=postgres password=123456 host=127.0.0.1 port=5433 │
└───────┴─────────┴──────────────────────────────────────────────────────────────────────────┘
-- 显示所有表
SHOW ALL TABLES;
┌──────────┬─────────┬────────────────┬──────────────────────┬─────────────────────────────────────────────┬───────────┐
│ database │ schema │ name │ column_names │ column_types │ temporary │
│ varchar │ varchar │ varchar │ varchar[] │ varchar[] │ boolean │
├──────────┼─────────┼────────────────┼──────────────────────┼─────────────────────────────────────────────┼───────────┤
│ db │ public │ accounts │ [id, client, amount] │ [BIGINT, VARCHAR, DOUBLE] │ false │
│ db │ public │ cacheme │ [id] │ [INTEGER] │ false │
│ db │ public │ demo │ [id, name, str_arr… │ [INTEGER, VARCHAR