Skip to content

Bulk Insert

SQL Server's native TDS BulkLoad protocol for high-performance inserts.

Basic Usage

ts
const count = await cn.bulk("Users")
  .columns([
    { name: "Id", type: "uniqueidentifier" },
    { name: "Name", type: "nvarchar" },
    { name: "Age", type: "int", nullable: true },
  ])
  .rows([
    [mssql.newCOMB(), "Alice", 30],
    [mssql.newCOMB(), "Bob", 25],
    [mssql.newCOMB(), "Charlie", null],
  ])
  .execute();

console.log(`Inserted ${count} rows`);

From Objects

ts
const count = await cn.bulk("Users")
  .columns([
    { name: "Name", type: "nvarchar" },
    { name: "Age", type: "int" },
  ])
  .fromObjects([
    { Name: "Alice", Age: 30 },
    { Name: "Bob", Age: 25 },
  ])
  .execute();

Batched Insert

For very large inserts, use batching to control memory usage:

ts
const count = await cn.bulk("LargeTable")
  .columns([...])
  .rows(millionsOfRows)
  .batchSize(10000)
  .execute();

With Pool

ts
const count = await pool.bulk("Users")
  .columns([...])
  .rows([...])
  .execute();
// Connection is automatically acquired and released