configulations for DuckDbDialect
DuckDBInstance instance or a function returns a Promise of DuckDBInstance instance.
Optional oncalled when a connection is created.
Promise
DuckDBConnection instance that is created.
Optional tableMappings of table name in kysely to duckdb table expressions.
Duckdb can read external source(file, url or database) as table
like: SELECT * FROM read_json_objects('path/to/file/*.json').
You can use raw duckdb table expression as table name, but it may be too
long, preserving too many implementation details.
This mappings is used to replace table name string to duckdb table expression.
Keys can be plain table names or schema-qualified names (e.g., "schema.table").
.withSchema("schema").selectFrom("table").const dialect = new DuckDbDialect({
database: db,
tableMappings: {
// Matches: db.selectFrom("person")
person: 'read_json_object("s3://my-bucket/person.json")',
// Matches: db.withSchema("archive").selectFrom("person")
"archive.person": 'read_parquet("s3://my-bucket/archive/person.parquet")',
}
});
const db = new Kysely<Database>({ dialect });
// Uses the "person" mapping (reads from JSON)
await db.selectFrom("person").selectAll().execute();
// Uses the "archive.person" mapping (reads from Parquet)
await db.withSchema("archive").selectFrom("person").selectAll().execute();
// No mapping for "neon.person", queries the attached database directly
await db.withSchema("neon").selectFrom("person").selectAll().execute();
Private Readonly configconfigulations for DuckDbDialect
DuckDBInstance instance or a function returns a Promise of DuckDBInstance instance.
Optional oncalled when a connection is created.
Promise
DuckDBConnection instance that is created.
Optional tableMappings of table name in kysely to duckdb table expressions.
Duckdb can read external source(file, url or database) as table
like: SELECT * FROM read_json_objects('path/to/file/*.json').
You can use raw duckdb table expression as table name, but it may be too
long, preserving too many implementation details.
This mappings is used to replace table name string to duckdb table expression.
Keys can be plain table names or schema-qualified names (e.g., "schema.table").
.withSchema("schema").selectFrom("table").const dialect = new DuckDbDialect({
database: db,
tableMappings: {
// Matches: db.selectFrom("person")
person: 'read_json_object("s3://my-bucket/person.json")',
// Matches: db.withSchema("archive").selectFrom("person")
"archive.person": 'read_parquet("s3://my-bucket/archive/person.parquet")',
}
});
const db = new Kysely<Database>({ dialect });
// Uses the "person" mapping (reads from JSON)
await db.selectFrom("person").selectAll().execute();
// Uses the "archive.person" mapping (reads from Parquet)
await db.withSchema("archive").selectFrom("person").selectAll().execute();
// No mapping for "neon.person", queries the attached database directly
await db.withSchema("neon").selectFrom("person").selectAll().execute();
Kysely dialect for duckdb.
Quick Start and Usage Example
Please see also Kysely Docs and Duckdb Docs
Install
Basic Usage Example
reding data from json file.