[DuckDB] ์‹œ์ž‘

[์›๋ณธ ๋งํฌ]

๊ธฐ๋ณธ์ ์ธ ์‚ฌ์šฉ๋ฒ• ์ •๋„๋งŒ ๋‹ค๋ค„๋ณธ๋‹ค.

duckdb๋Š” sqlite์™€ ๋งŽ์€ ๋ถ€๋ถ„์—์„œ ๋‹ฎ์•˜๋‹ค.
RDB๋“ค์ฒ˜๋Ÿผ ์ค‘์•™ DB ์„œ๋ฒ„๋ฅผ ๋„์›Œ์„œ ์“ฐ๋Š” ๊ตฌ์กฐ๊ฐ€ ์•„๋‹ˆ๋ผ, ํ•„์š”ํ•  ๋•Œ๋งŒ ์‹คํ–‰ํ•ด์„œ ์“ฐ๋Š” ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„๋‹ค.

๊ทธ๋ž˜์„œ ๊ทธ๋ƒฅ CLI๋กœ ์‹คํ–‰ํ•ด์„œ ๊ฐ€๋ณ๊ฒŒ ์“ธ ์ˆ˜๋„ ์žˆ๊ณ , ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ์ˆ˜์ค€์—์„œ importํ•ด ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
์—ฌ๊ธฐ์„œ๋Š” ์–ธ์–ด์— ๋…๋ฆฝ์ ์ด๊ณ  ๊ฐ„๋‹จํ•œ CLI ์‚ฌ์šฉ๋ฒ• ์ •๋„๋งŒ ๋‹ค๋ฃฌ๋‹ค.




CLI ์„ค์น˜

https://duckdb.org/docs/installation/?version=stable&environment=cli&platform=macos&download_method=direct

์„ค์น˜๋Š” ๊ฐ€์ด๋“œ ๋ฌธ์„œ๊ฐ€ ์žˆ์–ด์„œ ๊ฝค ๊ฐ„ํŽธํ•œ ํŽธ์ด๋‹ค.

๋ฆฌ๋ˆ…์Šค์˜ ๊ฒฝ์šฐ์—๋Š” ๋‹จ์ผ ๋ช…๋ น์œผ๋กœ ๋ฐ”๋กœ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

curl https://install.duckdb.org | sh

๊ทธ๋ž˜์„œ ์ด๋ ‡๊ฒŒ ์‹คํ–‰์ด ๋˜๋ฉด, ์„ค์น˜๋Š” ์ž˜ ๋œ ๊ฒƒ์ด๋‹ค.




CLI๋กœ ๋ฐ”๋กœ ์‹คํ–‰ (์ธ๋ฉ”๋ชจ๋ฆฌ ๋ชจ๋“œ)

๋”ฐ๋กœ ๋””์Šคํฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ํ•„์š” ์—†๊ณ , ๊ฐ„๋‹จํ•œ ํœ˜๋ฐœ์„ฑ ํ…Œ์ŠคํŠธ๋งŒ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๊ทธ๋ƒฅ duckdb๋งŒ ์ณ์„œ ์‹คํ–‰ํ•˜๋ฉด ๋œ๋‹ค.

์ด ์ƒํƒœ์—์„œ writeํ•œ ๋ฐ์ดํ„ฐ๋“ค์€ ํ˜„์žฌ duckdb ์‹คํ–‰ ์ปจํ…์ŠคํŠธ์—์„œ๋งŒ ์œ ํšจํ•˜๊ณ , ์ข…๋ฃŒํ•˜๋ฉด ๋‹ค ๋‚ ๋ผ๊ฐ„๋‹ค.




CLI๋กœ ๋ฐ”๋กœ ์‹คํ–‰ (๋””์Šคํฌ ๋ชจ๋“œ)

duckdb๋ฅผ ์‹คํ–‰ํ• ๋•Œ ์ €์žฅํ•  ์Šคํ† ๋ฆฌ์ง€ ํŒŒ์ผ๋ช…์„ ์ง€์ •ํ•˜๋ฉด, DB ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋ฉด์„œ ๋””์Šคํฌ ๋ชจ๋“œ๋กœ ์‹คํ–‰๋œ๋‹ค.

์ด ์ƒํƒœ์—์„œ write๋ฅผ ํ•˜๋ฉด ๊ทธ๊ฑด ์ด์ œ ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅ์ด ๋œ๋‹ค.
์ข…๋ฃŒํ–ˆ๋‹ค ์žฌ์‹คํ–‰ํ•ด๋„ ๋ณด์กด์ด ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.


์ด๋Ÿฐ ์‹์œผ๋กœ ํŒŒ์ผ์ด ์ƒ์„ฑ๋œ๋‹ค. wal๋„ ํ•จ๊ป˜๋‹ค.




Query Syntax

DuckDB๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ PostgreSQL ์Šคํƒ€์ผ์˜ ๋ฌธ๋ฒ•์„ ์ง€ํ–ฅํ•˜๋‚˜, Sqlite, MySQL์— ์˜ํ–ฅ์„ ๋ฐ›์€ ๋ถ€๋ถ„๋„ ์žˆ๋‹ค.




๋ฐ์ดํ„ฐ output ๊ธฐ๋Šฅ

duckDB์˜ ํŽธ๋ฆฌํ•œ ๋ถ€๋ถ„ ์ค‘ ํ•˜๋‚˜๋Š”, ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ํฌ๋งท๋“ค๊ณผ์˜ ์—ฐ๊ณ„๊ฐ€ ์‰ฌ์šด ํŽธ์ด๋ผ๋Š” ๊ฒƒ์ด๋‹ค.
์ฟผ๋ฆฌ ์‹คํ–‰์‹œ์— .์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ช…๋ น์–ด๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋Ÿฌ๋ฉด ์ถœ๋ ฅ๊ฒฐ๊ณผ๋ฅผ ๋งˆํฌ๋‹ค์šด ํŒŒ์ผ๋กœ ๋งŒ๋“ค๊ฒ ๋‹ค๋Š” ๋œป์ด ๋œ๋‹ค.

.mode markdown
.output series.md
SELECT *
FROM generate_series(5);

csv๋„ ๋˜๊ณ 

.mode csv
.output series.csv
SELECT *
FROM generate_series(6);

์ผ๋ฐ˜์ ์ธ ํฌ๋งท๋“ค์€ ๋‹ค ๋œ๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.

์ง€์›๋˜๋Š” ์ „์ฒด ์ถœ๋ ฅํฌ๋งท ๋ชฉ๋ก์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

https://duckdb.org/docs/stable/clients/cli/output_formats.html





๋ฐ์ดํ„ฐ import

duckDB๋Š” ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ ํฌ๋งท์„ ๋ฐ”๋กœ ๋ฐ์ดํ„ฐ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด ์ด๋Ÿฐ csv๊ฐ€ ์žˆ๋‹ค๋ฉด

๋ฐ”๋กœ ์ฟผ๋ฆฌ๋ฅผ ํ†ตํ•ด์„œ ๋กœ๋“œํ•ด์„œ ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

SELECT *
FROM read_csv('series.csv',
    delim = ',',
    header = true,
    columns = {
        'generate_series': 'VARCHAR'
    });


์ฐธ์กฐ
https://duckdb.org/docs/stable/clients/cli/overview.html
https://duckdb.org/docs/stable/data/csv/overview.html
https://duckdb.org/docs/stable/clients/cli/output_formats.html