Skip to content

datasource.createBatch ^v2.7.0

Creates a Batch object which can batch database operations with configurable types such as insert, update, or ignore using a specified datasource.

By grouping database operations into batches, the Batch object can significantly reduce the number of round-trips to the database, greatly improving performance for bulk data operations.

js
datasource.createBatch(datasourceNameOrId, tableName, fields)
datasource.createBatch(datasourceNameOrId, batchType, tableName, fields, updateFields)
datasource.createBatch(datasourceNameOrId, batchType, tableName, fields, updateFields, batchSize)

Parameters

  • datasource (string): The datasource name or id used for the batch operation.
  • batchType (string): The type of batch operation (e.g., INSERT, INSERT_OR_UPDATE, INSERT_OR_IGNORE). (Default: "INSERT") (optional)
  • tableName (string): The name of the database table.
  • batchSize (int): The number of rows in each batch before triggering a flush. (Default: 500) (optional)
  • fields (array): The field names that each row will contain.
  • updateFields (array): The field names to update on duplicate keys if applicable. (optional)

Methods

  • setAllowNulls(allowNulls) - Sets whether null values are allowed in the batch operation.

    • allowNulls (boolean): Whether or not null values are allowed in the batch operation.
  • insert(values) - Adds a new row to the batch. Automatically flushes the batch if the batch size is reached.

    • values (array): Array of values to insert for the row, the length of this array must match the length of fields assigned to the batch.
  • flush() - Manually flushes all pending batch operations to the database.

  • truncate() - Clears the entire database table associated with the batch.

Examples

js
// Example of creating an INSERT type batch with default 500 batch size.
var batch = datasource.createBatch(
    "Internal Datastore",   
    "test_table",
    ["field_1", "field_2", "field_3"]
);

// Truncate database table assosiated with batch, clearing all existing data.
batch.truncate();

// Insert rows into the batch. if batch reaches the batchSize threshold, it will automatically flush.
for (let i = 0; i < 15; i++) {
    batch.insert([
        `test_value_1`, // Value for 'field_1'
        "test_value_2", // Value for 'field_2'
        "test_value_3", // Value for 'field_3'
    ]);
}

// Manually flush the remaining data in the batch to the database if any didn't make the batch size threshold.
batch.flush();
js
// Example of creating an INSERT_OR_UPDATE type batch, where on duplicate key it will update "field_2" for that row otherwise it insert a new row.
var batch = datasource.createBatch(
    "Internal Datastore",   
    "INSERT_OR_UPDATE",
    "test_table",
    ["field_1", "field_2", "field_3"],
    ["field_2"]
);
js
// Example of creating an INSERT_OR_IGNORE type batch, where on duplicate key nothing will be updated.
var batch = datasource.createBatch(
    "Internal Datastore",   
    "INSERT_OR_IGNORE",
    "test_table",
    ["field_1", "field_2", "field_3"],
    []
);