databend-driver
v0.32.0
Published
Databend Driver Node.js Binding
Readme
databend-driver
Databend Node.js Client
Usage
const { Client } = require("databend-driver");
const client = new Client(
"databend://root:root@localhost:8000/?sslmode=disable",
);
const conn = await client.getConn();
await conn.exec(`CREATE TABLE test (
i64 Int64,
u64 UInt64,
f64 Float64,
s String,
s2 String,
d Date,
t DateTime
);`);
// get rows of value array
const rows = await conn.queryIter("SELECT * FROM test");
let row = await rows.next();
while (row) {
console.log(row.values());
row = await rows.next();
}
// get rows of map
const rows = await conn.queryIter("SELECT * FROM test");
let row = await rows.next();
while (row) {
console.log(row.data());
row = await rows.next();
}
// iter rows
const rows = await conn.queryIter("SELECT * FROM test");
for await (const row of rows) {
console.log(row.values());
}
// pipe rows
import { Transform } from "node:stream";
import { finished, pipeline } from "node:stream/promises";
const rows = await conn.queryIter("SELECT * FROM test");
const stream = rows.stream();
const transformer = new Transform({
readableObjectMode: true,
writableObjectMode: true,
transform(row, _, callback) {
console.log(row.data());
},
});
await pipeline(stream, transformer);
await finished(stream);
await conn.close();Type Mapping
General Data Types
| Databend | Node.js |
| ----------- | --------- |
| BOOLEAN | Boolean |
| TINYINT | Number |
| SMALLINT | Number |
| INT | Number |
| BIGINT | BigInt |
| FLOAT | Number |
| DOUBLE | Number |
| DECIMAL | String |
| DATE | Date |
| TIMESTAMP | Date |
| VARCHAR | String |
| BINARY | Buffer |
Semi-Structured Data Types
| Databend | Node.js |
| ----------- | ----------------- |
| ARRAY | Array |
| TUPLE | Array |
| MAP | Object |
| VARIANT | String / Object |
| BITMAP | String |
| GEOMETRY | String |
| GEOGRAPHY | String |
Note: VARIANT is a json encoded string. Example:
CREATE TABLE example (
data VARIANT
);
INSERT INTO example VALUES ('{"a": 1, "b": "hello"}');const row = await conn.queryRow("SELECT * FROM example limit 1;");
const data = row.values()[0];
const value = JSON.parse(data);
console.log(value);We also provide a helper function to convert VARIANT to Object:
const row = await conn.queryRow("SELECT * FROM example limit 1;");
row.setOpts({ variantAsObject: true });
console.log(row.data());Parameter binding
const row = await this.conn.queryRow(
"SELECT $1, $2, $3, $4",
(params = [3, false, 4, "55"]),
);
const row = await this.conn.queryRow(
"SELECT :a, :b, :c, :d",
(params = { a: 3, b: false, c: 4, d: "55" }),
);
const row = await this.conn.queryRow("SELECT ?, ?, ?, ?", [3, false, 4, "55"]);Development
cd bindings/nodejs
pnpm install
pnpm run build:debug
pnpm run test