Skip to content

Add generic CSV import with column mapping#1941

Draft
kolaente wants to merge 4 commits intomainfrom
claude/csv-import-feature-01Kavsoc8Zabn7Q7WwwfVjBh
Draft

Add generic CSV import with column mapping#1941
kolaente wants to merge 4 commits intomainfrom
claude/csv-import-feature-01Kavsoc8Zabn7Q7WwwfVjBh

Conversation

@kolaente
Copy link
Member

@kolaente kolaente commented Dec 7, 2025

Implementing request from https://community.vikunja.io/t/importing-data-from-horde-groupware/4199

Add a new CSV migration module that allows users to import tasks from any CSV file with custom column mapping and parsing options.

Backend changes:

  • New CSV migrator module with detection, preview, and import endpoints
  • Auto-detection of delimiter, quote character, and date format
  • Suggested column mappings based on column name patterns
  • Transactional import using InsertFromStructure

Frontend changes:

  • New CSV migration UI with two-step flow (upload -> mapping -> import)
  • Column mapping selectors for all task attributes
  • Live preview showing first 5 tasks with current mapping
  • Parsing option controls for delimiter and date format

The CSV migrator creates a parent "Imported from CSV" project with child projects based on the project column if provided, or a default "Tasks" project for tasks without a specified project.

claude and others added 4 commits December 7, 2025 11:03
Add a new CSV migration module that allows users to import tasks from
any CSV file with custom column mapping and parsing options.

Backend changes:
- New CSV migrator module with detection, preview, and import endpoints
- Auto-detection of delimiter, quote character, and date format
- Suggested column mappings based on column name patterns
- Transactional import using InsertFromStructure

Frontend changes:
- New CSV migration UI with two-step flow (upload -> mapping -> import)
- Column mapping selectors for all task attributes
- Live preview showing first 5 tasks with current mapping
- Parsing option controls for delimiter and date format

The CSV migrator creates a parent "Imported from CSV" project with
child projects based on the project column if provided, or a default
"Tasks" project for tasks without a specified project.
Use existing task.attributes translations instead of duplicating them
in the CSV migration section. Only keep CSV-specific translations.
Remove labels from service structs and move them to the component.
The service now exports simple arrays of values, while the component
handles translation through mapping functions.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants