BasekickLabs
Commands

arcli import

Bulk-load files into Arc with arcli import csv, lp, parquet or tle: measurement and time-column mapping, delimiter and time-format flags, the 500 MB line-protocol cap, and arcli import stats.

arcli import uploads one file to Arc's /api/v1/import/* endpoints, which parse it server-side and write Parquet directly. All four importers need an admin token. -f is the file, --database the target (or the profile's default_database).

Quick reference

arcli import csv     -f usage.csv   --database metrics --measurement cpu_import --time-column time
arcli import lp      -f cpu.lp      --database metrics
arcli import parquet -f cpu.parquet --database metrics --measurement cpu
arcli import tle     -f sats.tle    --database space
arcli import stats
$ arcli import csv -f usage.csv --database metrics --measurement cpu_import --time-column time
OK
  database:           metrics
  measurement:        cpu_import
  rows_imported:      2
  partitions_created: 1
  time_range:         [2026-09-07T00:00:00Z … 2026-09-07T00:01:00Z]
  columns:            time, host, usage
  duration_ms:        0

-o json prints the server's response document instead.

csv

Requires --measurement. The header row names the columns; --time-column picks the timestamp column (server default time) and --time-format its encoding when it is an epoch (epoch_s, epoch_ms, epoch_us, epoch_ns); left empty, the server lets DuckDB infer the format, which handles ISO 8601 strings. --delimiter overrides the server default ,; --skip-rows drops leading lines before the header.

FlagDescriptionDefault
--database stringtarget database (required; can also come from active connection's default_database)
--delimiter stringfield separator (server default: ,)
-f, --file stringpath to the input file (required)
--measurement stringtarget measurement name (required)
-o, --output stringoutput format: table|json"table"
--skip-rows intnumber of header rows to skip before parsing
--time-column stringcolumn to use as the row timestamp (server default: time)
--time-format stringepoch_s|epoch_ms|epoch_us|epoch_ns (empty = let DuckDB infer, works for ISO-8601 strings)

lp

Line protocol from a file. The measurement comes from each line, so --measurement is a filter here: lines for other measurements are skipped. The server caps the decompressed body at 500 MB and detects gzip automatically. --precision sets the timestamp unit (server default nanoseconds).

FlagDescriptionDefault
--database stringtarget database (required; can also come from active connection's default_database)
-f, --file stringpath to the input file (required)
--measurement stringfilter to a single measurement (LP lines for other measurements are dropped)
-o, --output stringoutput format: table|json"table"
--precision stringtimestamp precision: ns|us|ms|s (default: server-side default = ns)

parquet

Requires --measurement. The file's schema becomes the measurement's columns; --time-column names the timestamp column when it is not time.

FlagDescriptionDefault
--database stringtarget database (required; can also come from active connection's default_database)
-f, --file stringpath to the input file (required)
--measurement stringtarget measurement name (required)
-o, --output stringoutput format: table|json"table"
--time-column stringcolumn to use as the row timestamp (server default: time)

tle

Two-line element sets (satellite orbits). The measurement defaults to satellite_tle.

FlagDescriptionDefault
--database stringtarget database (required; can also come from active connection's default_database)
-f, --file stringpath to the input file (required)
--measurement stringtarget measurement (server default: satellite_tle)
-o, --output stringoutput format: table|json"table"

stats

$ arcli import stats
requests: 1
records:  2
errors:   0

Process-wide counters across every import format since the server started; per node, reset on restart, any token. -o json prints the raw document.

Every subcommand also takes the connection flags.

Alternatives

For streaming writes from a pipeline use arcli write (line protocol, MessagePack or JSON on stdin); for migrations from InfluxDB, tsm2arc reads TSM files directly.

On this page