Bulk import
Upload Parquet files for bulk import into existing tables and list the status of bulk import jobs.
Bulk import endpoints require the upgraded storage engine, enabled with the --use-pacha-tree flag, and a compactor node that runs the bulk import scheduler to complete the import. All endpoints require an admin (operator) token.
/api/v3/enterprise/importList bulk import statuses
Lists the status of bulk import jobs, for both uploads and object-store pulls.
Requires a token with the describe action on at least one database, or an admin token. The list includes only jobs for databases the token can describe. A token that can’t describe any database gets 403.
Requires the upgraded storage engine (enabled with the --use-pacha-tree flag).
This endpoint is only available in InfluxDB 3 Enterprise.
curl --request GET \
"https://localhost:8181/api/v3/enterprise/import" \
--header "Authorization: Bearer INFLUX_TOKEN"Responses
data
objecterror
stringdata
objecterror
stringdata
objecterror
string/api/v3/enterprise/importImport Parquet data
Imports Parquet data into an existing table. Send the data one of two ways:
- Upload (
multipart/form-data): send one Parquet file in the request. - Object-store pull (
application/json): name asourceprefix, and the server imports every Parquet file under it. The source is either a prefix in the cluster’s own object store or ans3://bucket/prefixURL. The server reads another bucket with its own object-store credentials; the request carries none, so those credentials must be able to read the bucket. A server whose own object store isn’t S3 can’t read another bucket and returns400.
The request returns after the import is staged. The compactor node imports the data asynchronously. A job
moves through queued, imported, and compacted; rows become queryable once the job is compacted.
Use List bulk import statuses to follow it.
Column types
For generic Parquet files, a column that isn’t in column_metadata is imported as a field, typed from its
Parquet type. This applies even when the target table already declares the column as a tag, so map every
string tag column (for example, {"column_mapping": {"host": "tag"}}). Otherwise the import fails with
invalid column type for column 'host', expected iox::column_type::tag, got iox::column_type::field::string.
A string column with no mapping can also fail with 400 Unable to infer data type for column.
Explicit schema databases
In a database created with schema_mode: explicit, every column in the file must already be declared on the
table. Otherwise the import is rejected and no job is created. Declare columns with
PATCH /api/v3/configure/table.
Permissions
Requires a token with the write action on the target database (for example, db:DATABASE_NAME:write), or an
admin token. For a token without that permission, including when the database doesn’t exist, the request
returns 403.
Requires the upgraded storage engine (enabled with the --use-pacha-tree flag); the compactor node runs the
bulk import scheduler that completes the import.
This endpoint is only available in InfluxDB 3 Enterprise.
Request body required
application/jsoncolumn_metadata
object{"column_mapping":{"room":"tag","temp":"f64","time":"time"}}column_mapping
required
objectcolumn_mapping, schema, and column_metadata.database
required
stringsource
required
string