# Save File to MOI Volume, Then Import to MOI Table

Read Catalog files and import their tabular data into a specified MatrixOne database and table.

Use it for tabular files already saved to an MOI volume. If upstream data is already structured as `rows`, use [Save to MOI Table](../data-io/save-table.md).

## Configure files and destination

| Setting | Description |
| --- | --- |
| S3 path `base_path` | Required Catalog/S3 base path locating the files |
| `file_ids` | Required array of Catalog file IDs |
| Table | Required target table name |
| MatrixOne database | Required target database name |
| Overwrite target table | Off by default; enabling it clears the table before import |

Upload files to an MOI volume first, then bind their IDs to `file_ids`.

## Configure tabular format

For CSV, configure field separator, line separator, and quote character. Empty settings use comma, newline, and double quote respectively. For Excel, specify a worksheet name or leave it empty for the active sheet.

Start row is the number of initial rows to skip. CSV generated from `rows` and `columns` has a header, so use 1.

Overwrite clears the table. Keep it off to retain existing records, and check that file fields match the target structure.

## Use the output

`total_rows` counts imported rows; `file_count` counts imported files. `table_name` identifies the target. Stage timings and resource usage details help investigate large-file imports.

## Example: import generated CSV

Flow: Save to MOI Volume → Save File to MOI Volume, Then Import to MOI Table.

Bind upstream `file_ids`, supply the base path, database, and table, set start row to 1, and leave overwrite off. Check imported counts and table contents afterward.

## Related pages

- [Variables and data flow](../../variables-and-data.md)
- [Run and debug](../../run-debug.md)
