Line Protocol Bulk Import
Bulk-load InfluxDB Line Protocol files through POST /api/v1/import/lp, including gzip-compressed .lp and .txt files, with optional measurement filtering.
Import InfluxDB Line Protocol files into Arc. Enables one-command migration from InfluxDB by uploading .lp or .txt files (plain or gzip-compressed).
Endpoint
POST /api/v1/import/lpHeaders
| Header | Required | Default | Description |
|---|---|---|---|
Authorization | Yes | - | Bearer $ARC_TOKEN |
X-Arc-Database | Yes | - | Target database name (or use db query param) |
Query parameters
| Parameter | Required | Default | Description |
|---|---|---|---|
measurement | No | (all) | Filter to a single measurement from the LP file |
precision | No | ns | Timestamp precision: ns, us, ms, s |
Basic example
curl -X POST "http://localhost:8000/api/v1/import/lp" \
-H "Authorization: Bearer $ARC_TOKEN" \
-H "X-Arc-Database: mydb" \
-F "file=@export.lp"Example with precision
# Import LP file with second-precision timestamps
curl -X POST "http://localhost:8000/api/v1/import/lp?precision=s" \
-H "Authorization: Bearer $ARC_TOKEN" \
-H "X-Arc-Database: mydb" \
-F "file=@export_seconds.lp"Response
{
"status": "ok",
"result": {
"database": "mydb",
"measurements": ["cpu", "mem", "disk"],
"rows_imported": 150000,
"precision": "ns",
"duration_ms": 342
}
}InfluxDB migration
Export from InfluxDB and import directly into Arc. For InfluxDB 1.x, use influx_inspect export (the influx CLI does not support Line Protocol output):
# Export from InfluxDB 1.x (reads TSM and WAL directly)
influx_inspect export \
-datadir /var/lib/influxdb/data \
-waldir /var/lib/influxdb/wal \
-database mydb -lponly -out export.lp
# Import to Arc
curl -X POST "http://localhost:8000/api/v1/import/lp" \
-H "X-Arc-Database: mydb" \
-H "Authorization: Bearer $ARC_TOKEN" \
-F "file=@export.lp"How it works
Data flows through Arc's high-performance columnar ingest pipeline (ArrowBuffer -> ArrowWriter -> Parquet -> storage) -- the same path used by streaming LP ingestion. This means bulk imports benefit from the same throughput, sort optimization, and hourly partitioning.
Notes
- Multi-measurement -- a single LP file can contain multiple measurements; all are imported in one request.
- Precision-aware -- timestamps are losslessly converted from the specified precision to Arc's internal microsecond format.
- Gzip support -- compressed files (
.lp.gz) are automatically detected and decompressed via magic bytes. - RBAC -- write permissions are checked for every measurement in the file.
- Maximum file size: 500 MB (after decompression).
Error responses
| Status | Description |
|---|---|
400 | Missing database, invalid precision, or no file uploaded |
403 | Insufficient write permissions for one or more measurements |
413 | File exceeds 500 MB size limit |
500 | Import execution error |
Parquet Import
Bulk-load existing Parquet files through POST /api/v1/import/parquet, preserving column types, remapping the time column, and repartitioning into Arc's layout.
Migration
Move to Arc from QuestDB, TimescaleDB, ClickHouse, or InfluxDB: re-point ingestion, bulk-load historical data, and translate each system's SQL dialect.