Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

[Feat]: Import data from file (CSV/TSV/JSON)

Open
#484 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
48/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Quiet
Tech stack
rust, typescript
Domain
database

Research direction

Start by reading the existing clipboard import modal and the frontend parse, infer, preview, and execute flow; the issue names execute_clipboard_import as the Rust-side entry point. Trace how the modal receives clipboard content and how the file picker can feed the same pipeline, including the proposed size warning. Done means file import works for the listed formats through the existing preview and execution flow, with a warning for large files.

Written by the indexing model from the issue text.

Description

Prerequisites
  • I have written a descriptive issue title
  • I have searched existing issues to ensure the feature has not already been requested
🚀 Feature Proposal

Add "Import from file…" as a data source for table imports, alongside the existing clipboard import.

The clipboard import modal is already a full-featured import pipeline: format detection (TSV / CSV / JSON array / Markdown table), type inference with confidence levels, schema editor, data preview, create/append modes with fail/append/replace strategies, mapping to existing columns and ALTER TABLE ADD COLUMN for new ones — all driver-agnostic on the Rust side (execute_clipboard_import goes through the driver trait, so plugins work too).

The only missing piece is the data source: today the modal can only read from the clipboard, which is not a workable flow for actual files.

Proposed v1 (small):

  • A file picker (.csv, .tsv, .json, .md) feeding the file content into the existing parse → infer → preview → execute pipeline;
  • the modal becomes a generic "Import data" modal with two sources (clipboard / file);
  • a size guard with a warning above ~10–20 MB, since parsing happens in the frontend.

Follow-up v2 (large files):

  • Rust-side streaming CSV parsing (the csv crate is already a dependency for export) with batched inserts, progress events and cancellation — mirroring the existing streaming export pipeline;
  • switch inserts to prepared statements / multi-row batches for throughput;
  • fix the frontend CSV parser to support quoted cells containing newlines (it currently splits on \n before parsing — fine for clipboard content, not for real-world CSV files).
Motivation

Tabularis can export result sets to CSV/JSON files (and soon Markdown), but there is no way to import a file into a table — the asymmetry is surprising for users coming from other DB tools. Loading a CSV into a new or existing table is one of the most common day-to-day tasks.

Example

Table context menu / explorer → "Import data…" → pick users.csv → same schema/preview screen as the clipboard import → rows inserted with create-table or append.


Happy to work on a PR (v1 first) if there's interest.

Dominant language
TypeScript
Stars
5.1k
Forks
335
Avg merge
2d 5h
Merged PRs (30d)
60

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from TabularisDB/tabularis

All issues in TabularisDB/tabularis

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.