Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Import & Export

tmkpr import [FILE] [--skip-errors] [--dry-run]
tmkpr export [FILE] [-p PROJECT] [-t TASK] [--from TIME] [--until TIME] [--tag TAG] [--no-active]

Import

Reads projects, tasks, and time entries from a CSV or JSON file and creates any missing projects and tasks automatically.

Supported CSV columns (case-insensitive, spaces/hyphens treated as underscores):

ColumnNotes
startCombined start datetime (required — or split into start_date + start_time)
start_date, start_timeAlternative split form
end / end_date / end_timeEnd datetime; omit for an active entry
durationDuration instead of end time (1:30:00, 1h30m, 90m)
projectProject name — created if it doesn’t exist
taskTask name within the project — created if it doesn’t exist
note / description / commentFree-text note
tagsComma-separated tags
tmkpr import entries.csv               # import from file
tmkpr import entries.json              # JSON file (auto-detected by extension)
tmkpr import --dry-run entries.csv     # preview without writing
tmkpr import --skip-errors entries.csv # continue past bad rows
tmkpr import -                         # read CSV from stdin
tmkpr -f json import -                 # read JSON from stdin

Export

Writes entries to CSV (default) or JSON. Columns: project, task, start, end, note, tags. Datetimes are written in local time so files round-trip cleanly through import.

tmkpr export                           # all entries to stdout (CSV)
tmkpr export entries.csv               # all entries to file
tmkpr export entries.json              # JSON (auto-detected by extension)
tmkpr -f json export                   # JSON to stdout
tmkpr export --from 2024-01-01 out.csv # date range
tmkpr export -p "My Project" out.csv   # filter by project
tmkpr export | tmkpr import -          # round-trip: export then re-import