Skip to content

Import several CSV files in one pass #2499

Closed

Description

@datlechin

Problem

Import Data… takes one file. Its file panel allows a single file and no folder (apple/TablePro/Core/Services/Infrastructure/ImportFilePanel.swift:63-65). Loading a directory of exports means running the whole flow once per file and checking the parsing options each time.

The pieces a batch needs already exist for one file: a proposed table name derived from the file name (features/import-export.mdx:330), a mapping saved per table and restored on the next import (features/import-export.mdx:379-381), and one on-error and transaction policy per import (features/import-export.mdx:283-300).

Proposed solution

  • Multi-select in the file panel, and accept a dropped folder of .csv, .tsv, .json and .xlsx files.
  • One sheet listing the files, each mapped to a target table: the table whose name matches the file, or a new table under the name the single-file sheet would propose. Each row opens the usual column mapping, starting from the table's saved mapping.
  • Parsing options set once for the batch and overridable per file, since delimiter and encoding are detected per file.
  • One transaction and one on-error policy for the whole batch, a Safe Mode prompt once for the batch, and a summary that counts rows per file.

Done when: a folder of 20 CSV files imports into 20 tables in one run, a failure in file 12 rolls back all of them under Stop and Rollback, and the summary names each file's row count.

Alternatives considered

Import one file at a time.

Platform

macOS

Related database type

N/A / General

Activity

  1. datlechin commented on Oct 21, 2026

    @datlechin
    MemberAuthor

    Fixed by #3745.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions