Open9
duckdbメモ

await db.registerFileURL("sample1.json", "http://localhost:3000/sample1.json", DuckDBDataProtocol.HTTP, false)
みたいにファイルでできる

insertJSONFromPathを二回かけようとすると、すでにテーブルがあると怒られる。
下記のようにcreate: false
すると通せる
await connection.insertJSONFromPath("sample1.json", {
name: "fruit",
})
await connection.insertJSONFromPath("sample2.json", {
name: "fruit",
create: false
})

カラム数が違うものはUNION BY ALLは出来ないが、UNION BY NAMEならできる
const data = await connection.query(`
SELECT * FROM sample1.json
UNION BY NAME
SELECT * FROM sample2.json
`)

キャスト
::INTEGER
とかにするとキャスト楽にできる
const data = await connection.query(`
SELECT SUM(price)::INTEGER FROM sample1.json
`)

OPFS

pivot

- https://duckdb.org/docs/sql/statements/pivot.html#limitations
- USINGの変換はコツ必要。外側でやる