# Data Ingestion Methods & Tools

ColumnStore provides several mechanisms to ingest data:

* [cpimport](/docs/analytics/mariadb-columnstore/clients-and-tools/data-ingestion/columnstore-bulk-data-loading.md) provides the fastest performance for inserting data and ability to route data to particular PrimProc nodes. Normally, this should be the default choice for loading data .
* [LOAD DATA INFILE](/docs/analytics/mariadb-columnstore/reference/data-manipulation-statements/columnstore-load-data-infile.md) provides another means of bulk inserting data.
  * By default, with autocommit on, it internally streams the data to an instance of the `cpimport` process.
  * In transactional mode, DML inserts are performed, which is significantly slower and also consumes both binlog transaction files and ColumnStore VersionBuffer files.
* DML, i.e. `INSERT`, `UPDATE`, and `DELETE`, provide row-level changes. ColumnStore is optimized towards bulk modifications, so these operations are slower than they would be in, for instance, InnoDB.
  * Currently ColumnStore does not support operating as a replication replica target.
  * Bulk DML operations will in general perform better than multiple individual statements.
    * [INSERT INTO SELECT](/docs/analytics/mariadb-columnstore/clients-and-tools/data-ingestion/columnstore-batch-insert-mode.md) with autocommit behaves similarly to `LOAD DATE INFILE` because, internally, it is mapped to `cpimport` for higher performance.
    * Bulk update operations based on a join with a small staging table can be relatively fast, especially if updating a single column.
* Using ColumnStore Bulk Write SDK or [ColumnStore Streaming Data Adapters](/docs/analytics/mariadb-columnstore/clients-and-tools/data-ingestion/columnstore-streaming-data-adapters.md).

<sub>*This page is: Copyright © 2025 MariaDB. All rights reserved.*</sub>

{% @marketo/form formId="4316" %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://mariadb.com/docs/analytics/mariadb-columnstore/clients-and-tools/data-ingestion.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
