R

library("duckdb")
library("dplyr")

# テストデータ
d <- data.frame(id = c(1, 2, 3), name = c('A', 'B', 'C'))

# dをCSVファイル形式で保存
write.csv(d, 'test_R.csv')

# DB接続/新規作成
# con <- dbConnect(duckdb())
con <- dbConnect(duckdb("test_db_R.duckdb"))

#
# 保存したファイルからデータ読み込み,DBにtestテーブルを新規作成
#

# CSV(comma separated values)
dbSendQuery(con, "DROP TABLE IF EXISTS test_table_R")
dbSendQuery(con, "CREATE TABLE test_table_R AS SELECT * FROM read_csv_auto('test_R.csv')")

# TSV (tab separated values)
# dbExecute(con, "CREATE TABLE test_table_r AS SELECT * FROM read_csv_auto('test.csv', delim='\t')")

# テーブル取得(その1:表全体)
(d <- dbReadTable(con, "test_table_R"))
##   column0 id name
## 1       1  1    A
## 2       2  2    B
## 3       3  3    C
# テーブル取得(その2:クエリ経由:抽出条件を付与できる)
res <- dbSendQuery(con, "SELECT * FROM test_table_R")
(d <- dbFetch(res))
##   column0 id name
## 1       1  1    A
## 2       2  2    B
## 3       3  3    C
dbClearResult(res) # クエリ結果を消去

# DB終了
dbDisconnect(con, shutdown=T)

Python

Terminalタブを開き,コマンド「pip install duckdb」でduckdbをインストールしておく。

import duckdb
import pandas as pd

# テストデータ
df = pd.DataFrame({'id': [1, 2, 3], 'name': ['A', 'B', 'C']})

# dfをCSVファイル形式で保存
df.to_csv('test_py.csv')

# DB接続/新規作成
# con = duckdb.connect(database=':memory:')
con = duckdb.connect(database='test_db_py.duckdb')

#
# 保存したファイルからデータ読み込み,DBにtestテーブルを新規作成
#

# CSV(comma separated values)
con.sql('DROP TABLE IF EXISTS test_table_py')
con.sql('CREATE TABLE test_table_py AS SELECT * FROM read_csv_auto("test_py.csv")')

# TSV (tab separated values)
# con.sql('CREATE TABLE test_table_py AS SELECT * FROM read_csv_auto("test_py.tsv", delim="\t")')

# testテーブルの表示
con.table('test_table_py').show()
## ┌─────────┬───────┬─────────┐
## │ column0 │  id   │  name   │
## │  int64  │ int64 │ varchar │
## ├─────────┼───────┼─────────┤
## │       0 │     1 │ A       │
## │       1 │     2 │ B       │
## │       2 │     3 │ C       │
## └─────────┴───────┴─────────┘
# クエリ実行
res = con.execute('SELECT * FROM test_table_py')

# 結果取得
df_res = res.fetchdf()
print(df_res)
##    column0  id name
## 0        0   1    A
## 1        1   2    B
## 2        2   3    C

# DB終了
con.close()