> For the complete documentation index, see [llms.txt](https://docs.ninox.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ninox.com/user-hub/common-tasks/im-and-export-data.md).

# Im- and export data

## Import data

Use imports to bring CSV data into an app without entering records manually.

{% hint style="info" %}
You can only import data into a table if you have write permission for that table.
{% endhint %}

During import, you control how Ninox reads the file and where each column goes. This includes:

* choosing whether to insert new records, update existing records, or do both
* checking parse settings such as encoding, separators, and date formats
* mapping CSV columns to existing Ninox fields or creating new fields
* previewing the result before you import anything

### What you can control during import

The import dialog lets you decide how Ninox reads the file and how each CSV column is handled.

Two areas matter most:

* **Parse settings** control how Ninox reads the file format.
* **Map fields** control where the CSV data goes in Ninox.

#### Parse settings

In **Parse settings**, you define how Ninox reads the import file.

Start by choosing how Ninox should handle the records:

* **Update only** updates existing records
* **Insert only** adds new records
* **Update & insert** updates existing records and adds new ones

Then check the file format options:

* **Encoding** defines the character set, such as **UTF-8 (Unicode)**
* **Date format** defines how Ninox reads date values
* **Number format** defines how Ninox reads decimal and thousands separators
* **Column separator** defines how columns are separated, such as comma, semicolon, or tabulator
* **Text delimiter** defines which quotation marks wrap text values

You can also control two import details:

* **Include header** tells Ninox that the first row contains column names
* **Treat empty fields as null** imports empty values as `null`. This means the field has no value. It is not an empty text value and not the number `0`. Use this option when empty cells should stay unset after import.

Use the preview on the right to check whether Ninox reads the file correctly.

The preview also uses color labels to show what will happen during import:

* **New** shows records that Ninox will add
* **Updated** shows records that Ninox will change
* **Removed** shows records that will be removed from the result set during import preview
* **Unchanged** shows records that stay the same

#### Map fields

In **Map fields**, Ninox shows one row for each CSV column.\
Use the **Import** toggle to decide whether Ninox should import that column at all. If the toggle is off, Ninox skips the column.\
In **CSV fields**, you see the column names from the CSV file.\
In **Existing ninox fields**, you choose what Ninox should do with each CSV column.\
You can:

* select **Do not map** to ignore the column
* select an existing Ninox field to import the values into that field
* select **+ Create field** to create a new field for that column

If you select an existing Ninox field, Ninox maps the CSV column to that field.

In this case, you can also choose an **Update policy**:

* **Update** replaces the existing value
* **Update empty** fills only empty values

If you select **+ Create field**, Ninox adds a second selector below it. Use that selector to choose the field type, such as **Text**.

### Import data into an existing table

Use this flow when the table already exists.

{% stepper %}
{% step %}
**Open the import dialog**

Open the table in the **app screen**.\
In the toolbar, click **Import/export**.\
Then click **Import data**.
{% endstep %}

{% step %}
**Upload your file**

Drag your CSV file into the import dialog. Or select the file from your local device.
{% endstep %}

{% step %}
**Review parse settings**

Choose how Ninox should read the file.

Start with the import mode:

* **Insert only** adds new records
* **Update only** changes existing records
* **Update & insert** does both

Then check these options:

* **Encoding**, such as **UTF-8 (Unicode)**
* **Date format**
* **Number format**
* **Column separator**
* **Text delimiter**
* **Include header**
* **Treat empty fields as null**

Use the preview on the right to verify the result.
{% endstep %}

{% step %}
**Map the file columns**

Open **Map fields**.

For each CSV column, choose the matching existing field.\
You can also:

* turn off **Import** to skip a column
* create a new field if needed
* choose an update policy for mapped fields

Use **Update** to replace existing values.\
Use **Update empty** to fill only empty values.
{% endstep %}

{% step %}
**Import the records**

Check the preview one last time.\
Then click **Import records**.
{% endstep %}
{% endstepper %}

## Export data

Use export to move table data from Ninox into other tools for reporting, sharing, or further processing.\
You can export data as **CSV** for spreadsheets or as **JSON** for structured processing and integrations. Ninox downloads exported files directly to your local device.

#### CSV settings

For **CSV** exports, you can control how Ninox formats the file.

* Use **Include header** to add the field names to the first row.
* Use **Include separator definition in header** to add the separator definition at the top of the file.

Then review these options:

* **Delimiter** defines how columns are separated, such as comma, semicolon, pipe, or tabulator. Choose the separator your spreadsheet app or import tool expects.
* **Date format** defines how Ninox writes date values, such as **Locale**, **ISO 8601**, **GMT**, or **UNIX timestamp**. Choose a format your next tool can read without conversion.
* **Number format** defines how decimal values are written, such as **Locale**, `1234.56`, or `1234,56`. Match this setting to the decimal format your target tool expects.
* **Quote character** defines which quotation marks wrap text values. This helps when values contain separators or special characters.
* **Encoding** defines the character set, such as **UTF-8 (Unicode)**. Choose the encoding that keeps special characters readable in the target app.
* **Include BOM** adds a byte order mark to the file header. This can help some spreadsheet apps detect the file encoding correctly.

Choose the settings that match the tool that will open the file next.

### Export data as CSV

Choose **CSV** when you want to work with the data in a spreadsheet app or send it as a flat file.

{% stepper %}
{% step %}
**Open the export dialog**

Open the table in the **app screen**.\
In the toolbar, click **Import/export**.\
Then click **Export data**.
{% endstep %}

{% step %}
**Choose CSV**

In the export dialog, select **CSV**.
{% endstep %}

{% step %}
**Review the CSV settings**

Check whether you want to include the header row.\
If needed, turn on **Include separator definition in header**.

Then review these options:

* **Delimiter**
* **Date format**
* **Number format**
* **Quote character**
* **Encoding**
* **Include BOM**
  {% endstep %}

{% step %}
**Download the file**

Click **Download as CSV**.

Ninox downloads a CSV file of the table directly to your local device with the settings you selected.
{% endstep %}
{% endstepper %}

### Export data as JSON

Choose **JSON** when you want a structured export for integrations, scripts, or further processing.

{% stepper %}
{% step %}
**Open the export dialog**

Open the table in the **app screen**.

In the toolbar, click **Import/export**.

Then click **Export data**.
{% endstep %}

{% step %}
**Choose JSON**

In the export dialog, select **JSON**.
{% endstep %}

{% step %}
**Download the file**

Click **Download as JSON**.

Ninox downloads a JSON file of the table directly to your local device for structured reuse in other tools.
{% endstep %}
{% endstepper %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.ninox.com/user-hub/common-tasks/im-and-export-data.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
