Abfrage
DuckDB-Wasm stellt Funktionen zum Abfragen von Daten bereit. Abfragen werden nacheinander ausgeführt.
Zuerst muss eine Verbindung durch Aufruf von connect erstellt werden. Anschließend können Abfragen durch Aufruf von query oder send ausgeführt werden.
Abfrageausführung
// Create a new connectionconst conn = await db.connect();
// Either materialize the query resultawait conn.query<{ v: arrow.Int }>(` SELECT * FROM generate_series(1, 100) t(v)`);// ..., or fetch the result chunks lazilyfor await (const batch of await conn.send<{ v: arrow.Int }>(` SELECT * FROM generate_series(1, 100) t(v)`)) { // ...}
// Close the connection to release memoryawait conn.close();Prepared Statements
// Create a new connectionconst conn = await db.connect();// Prepare queryconst stmt = await conn.prepare(`SELECT v + ? FROM generate_series(0, 10_000) t(v);`);// ... and run the query with materialized resultsawait stmt.query(234);// ... or result chunksfor await (const batch of await stmt.send(234)) { // ...}// Close the statement to release memoryawait stmt.close();// Closing the connection will release statements as wellawait conn.close();Arrow Table nach JSON
// Create a new connectionconst conn = await db.connect();
// Queryconst arrowResult = await conn.query<{ v: arrow.Int }>(` SELECT * FROM generate_series(1, 100) t(v)`);
// Convert arrow table to jsonconst result = arrowResult.toArray().map((row) => row.toJSON());
// Close the connection to release memoryawait conn.close();Parquet exportieren
// Create a new connectionconst conn = await db.connect();
// Export Parquetconn.send(`COPY (SELECT * FROM tbl) TO 'result-snappy.parquet' (FORMAT parquet);`);const parquet_buffer = await this._db.copyFileToBuffer('result-snappy.parquet');
// Generate a download linkconst link = URL.createObjectURL(new Blob([parquet_buffer]));
// Close the connection to release memoryawait conn.close();