Ducklings API Documentation
    Preparing search index...

    Getting Started with Ducklings

    Ducklings provides lightweight DuckDB bindings for JavaScript/TypeScript, with packages optimized for different environments.

    npm install @ducklings/browser
    # or
    pnpm add @ducklings/browser

    Tip: You can also load from a CDN without installing any packages.

    npm install @ducklings/workers
    # or
    pnpm add @ducklings/workers
    import { init, DuckDB } from '@ducklings/browser';

    // Initialize DuckDB (URLs are auto-resolved)
    await init();

    // Get the database instance and create a connection
    const db = new DuckDB();
    const conn = await db.connect();

    // Execute a query
    const rows = await conn.query('SELECT 42 as answer');
    console.log(rows); // [{ answer: 42 }]

    // Get results as Arrow Table
    const table = await conn.queryArrow('SELECT * FROM range(10)');
    console.log(table.numRows); // 10

    // Clean up
    await conn.close();
    await db.close();
    import { init, DuckDB } from '@ducklings/workers';
    import wasmModule from '@ducklings/workers/wasm';

    // Initialize with pre-compiled WASM module
    await init({ wasmModule });

    // Create database and connection
    const db = new DuckDB();
    const conn = db.connect();

    // Execute a query (async in Workers)
    const rows = await conn.query('SELECT 42 as answer');
    console.log(rows); // [{ answer: 42 }]

    // Clean up
    conn.close();
    db.close();

    Both packages provide the same query methods:

    Method Returns Use Case
    query<T>(sql) Promise<T[]> Get results as array of objects
    queryArrow(sql) Promise<Table> Get results as Arrow Table
    execute(sql) Promise<number> Execute statements (INSERT, UPDATE, etc.)