# Import Data into an Existing Baserow Table and Update Rows

> Bringing fresh data into a table that already has its fields configured keeps everything intact - see how column mapping and update-or-append work in Baserow.

Source: https://opennix.org/en/docs/baserow/tables/import-data-into-an-existing-table/


Adding data to a table that already exists is different from starting one from scratch: import respects the field types already configured, so dates stay dates, numbers stay numbers, and select fields match their existing options automatically.

## Overview

Unlike [creating a table via import](/docs/baserow/tables/create-a-table-via-import/), where every field starts as text, importing into an existing table honors the field configuration that is already there. That makes it a good fit for regularly refreshing a table with new data or updating records that already exist.

![Import dialog with the option to update existing rows in a Baserow table](/images/baserow/tables/baserow-import-merge-upsert-rows.jpg)

## When to Use an Existing-Table Import

Importing into an existing table is the right call when the goal is to:

- add new records to a table that gets updated regularly (weekly sales figures, new customer sign-ups);
- refresh existing records with current data from an external system;
- import data that needs to match field types that are already configured (dates, select options, linked records).

[Creating a new table via import](/docs/baserow/tables/create-a-table-via-import/) fits better when starting a brand-new project with no existing structure, importing a one-off dataset, or still experimenting with the data's shape.

## Supported Formats

Data can be imported into an existing table from CSV, JSON, or XML files, or pasted directly from a spreadsheet. Every format maps automatically to the table's existing field structure.

Baserow maps import columns to fields by matching column headers to field names. If the headers don't match exactly, the mapping can be adjusted manually before finishing the import.

## Before Importing: Preparation

Make sure the table already has the right field types configured - importing dates into a text field or numbers into a single-select field causes mismatches. Match the file's column headers to the table's field names for automatic mapping, clean the data of empty rows, and check that special characters display correctly. To update records rather than add new ones, include a unique identifier column (such as an ID or email address) present in both the file and the table.

## How to Import into an Existing Table

1. Open the table that needs new data.
2. Click the ellipsis `•••` next to the view name to open its settings.
3. Select **Import file** from the dropdown menu.
4. Choose the file type (CSV, JSON, XML, or paste data).
5. Upload the file or paste the data directly.
6. Review the field mapping so columns line up with the right fields.
7. Choose a strategy: leave the box unchecked to append every row as a new record, or check **Update rows if they already exist** to refresh matching records.
8. Click **Import**.

## Understanding Field Mapping

Baserow maps file columns to table fields automatically when column headers exactly match field names - for example, when the table has fields named "Customer Name," "Email," and "Purchase Date" and the CSV has columns with identical names. Manual mapping is needed when headers don't match exactly, when a column needs to go into a field other than the one its name suggests, or when only some columns should be imported and the rest skipped.

Toggle between the **Import Preview** and **File Content** views to compare how the source data will land in the table's fields before finishing the import. If imported data doesn't match a field's type (text into a number field, for example), those cells stay empty after import.

## Append or Update: Choosing a Strategy

**Append new records (default).** Every row in the import file creates a new record, regardless of whether similar data already exists. This is the simplest option and works well for time-series data (daily sales reports) or adding clearly new entries (new customer sign-ups).

**Update existing records.** Checking **Update rows if they already exist** makes Baserow compare imported rows against existing records and update matches instead of creating duplicates. This requires a unique identifier field (ID, email, order number) present in both the table and the import file; rows without a match get added as new records. This mode fits refreshing data from external systems and bulk-correcting information without manually removing duplicates.

## Special Field Handling

For link-to-table fields, the import creates relationships automatically when the data references records in other tables (customer IDs, for example). For single and multiple select fields, Baserow creates new options automatically if they don't already exist. Date and number fields expect data in the matching format - anything that doesn't fit stays empty after import.

## Frequently Asked Questions

**What happens if the imported data doesn't match a field's type?** Cells with incompatible data stay empty after import. Check the preview before finishing to catch mismatches.

**Can I import data into some fields but not others?** Yes, field mapping lets you choose which columns to import and which to skip - fields left out of the mapping stay unchanged.

**How do I avoid creating duplicate records?** Use the "Update rows if they already exist" option and make sure the table has a reliable unique identifier field.

**What is the maximum number of rows I can import at once?** Up to 5,000 rows per import into an existing table; split larger datasets into multiple import files.

Next, read [Customize a Table](/docs/baserow/tables/customize-a-table/) for renaming, duplicating, exporting, and the other table-level settings.

