{"id":3671,"date":"2022-07-22T17:44:07","date_gmt":"2022-07-22T08:44:07","guid":{"rendered":"https:\/\/julialang.kr\/?p=3671"},"modified":"2022-07-22T17:44:09","modified_gmt":"2022-07-22T08:44:09","slug":"julia-db-duckdb","status":"publish","type":"post","link":"https:\/\/julialang.kr\/?p=3671","title":{"rendered":"[Julia, DB] DuckDB"},"content":{"rendered":"\n<p>DuckDB\ub294 inprocess OLAP db \uc778\ub370 \ubcc4\ub3c4\uc758 \uc11c\ubc84 \uc124\uce58 \uc5c6\uc774 \ubc14\ub85c  \uc0ac\uc6a9 \uac00\ub2a5\ud55c in app db \uc774\ub2e4.<\/p>\n\n\n\n<p>DuckDB URL : <a href=\"https:\/\/duckdb.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/duckdb.org\/<\/a><\/p>\n\n\n\n<p>Analytical DBMS \ube44\uad50<\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/clickhouse.com\/benchmark\/dbms\/\" target=\"_blank\">https:\/\/clickhouse.com\/benchmark\/dbms\/<\/a><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>DuckDB Julia Package : <a href=\"https:\/\/github.com\/kimmolinna\/DuckDB.jl\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/kimmolinna\/DuckDB.jl<\/a><\/p>\n\n\n\n<p>DuckDB install<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pkg>add DuckDB#master\n\njulia> using DuckDB\r\n\r\njulia> db = DuckDB.open(\":memory:\")\r\nDuckDB.DB(\":memory:\")\r\n\r\njulia> con = DuckDB.connect(db)\r\nDuckDB.Connection(\":memory:\")\r\n\r\njulia> res = DuckDB.execute(con,\"CREATE TABLE integers(date DATE, jcol INTEGER);\")\r\n0\u00d71 DataFrame\r\n\r\njulia> res = DuckDB.execute(con,\"INSERT INTO integers VALUES ('2021-09-27', 4), ('2021-09-28', 6), ('2021-09-29', 8);\")\r\n1\u00d71 DataFrame\r\n Row \u2502 Count\r\n     \u2502 Int64\r\n\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n   1 \u2502     3\r\n\r\njulia> res = DuckDB.execute(con, \"SELECT * FROM integers;\")\r\n3\u00d72 DataFrame\r\n Row \u2502 date        jcol\r\n     \u2502 Date        Int32\r\n\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n   1 \u2502 2021-09-27      4\r\n   2 \u2502 2021-09-28      6\r\n   3 \u2502 2021-09-29      8\r\n\r\njulia> df = DuckDB.toDataFrame(res)\r\n3\u00d72 DataFrame\r\n Row \u2502 date        jcol\r\n     \u2502 Date        Int32\r\n\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n   1 \u2502 2021-09-27      4\r\n   2 \u2502 2021-09-28      6\r\n   3 \u2502 2021-09-29      8\r\n\r\njulia> df = DuckDB.toDataFrame(con, \"SELECT * FROM integers;\")\r\n3\u00d72 DataFrame\r\n Row \u2502 date        jcol\r\n     \u2502 Date        Int32\r\n\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n   1 \u2502 2021-09-27      4\r\n   2 \u2502 2021-09-28      6\r\n   3 \u2502 2021-09-29      8\r\n\r\njulia> res = DuckDB.execute(con, \"COPY (SELECT * FROM integers) TO 'test.parquet' (FORMAT 'parquet');\")\r\n1\u00d71 DataFrame\r\n Row \u2502 Count\r\n     \u2502 Int64\r\n\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n   1 \u2502     3\r\n\r\njulia> res = DuckDB.execute(con, \"SELECT * FROM 'test.parquet';\")\r\n3\u00d72 DataFrame\r\n Row \u2502 date        jcol\r\n     \u2502 Date        Int32\r\n\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n   1 \u2502 2021-09-27      4\r\n   2 \u2502 2021-09-28      6\r\n   3 \u2502 2021-09-29      8\r\n\r\njulia> DuckDB.appendDataFrame(df, con, \"integers\")\r\n\r\njulia> DuckDB.disconnect(con)\r\n\r\njulia> DuckDB.close(db)\r\n<\/code><\/pre>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>DuckDB\ub294 inprocess OLAP db \uc778\ub370 \ubcc4\ub3c4\uc758 \uc11c\ubc84 \uc124\uce58 \uc5c6\uc774 \ubc14\ub85c \uc0ac\uc6a9 \uac00\ub2a5\ud55c in app db \uc774\ub2e4. DuckDB URL : https:\/\/duckdb.org\/ Analytical DBMS \ube44\uad50 https:\/\/clickhouse.com\/benchmark\/dbms\/ DuckDB Julia Package : https:\/\/github.com\/kimmolinna\/DuckDB.jl DuckDB install<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"default","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[66],"tags":[],"_links":{"self":[{"href":"https:\/\/julialang.kr\/index.php?rest_route=\/wp\/v2\/posts\/3671"}],"collection":[{"href":"https:\/\/julialang.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/julialang.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/julialang.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/julialang.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3671"}],"version-history":[{"count":3,"href":"https:\/\/julialang.kr\/index.php?rest_route=\/wp\/v2\/posts\/3671\/revisions"}],"predecessor-version":[{"id":3674,"href":"https:\/\/julialang.kr\/index.php?rest_route=\/wp\/v2\/posts\/3671\/revisions\/3674"}],"wp:attachment":[{"href":"https:\/\/julialang.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3671"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/julialang.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3671"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/julialang.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3671"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}