Import
DynoTable imports CSV, JSON, and NDJSON files into an existing table — the other half of Export. The whole file is checked before a single row is written, so a bad file fails with line numbers instead of leaving half your data imported.
Open it with the Import button in the table toolbar. Import writes to the table, so it needs a Trialing or Active license.

Import loads data into a table that already exists — it never creates one. Make the table (and its primary key) first, then import into it.
Two levels of fidelity
Exact — JSON / NDJSON written in the
(DynamoDB-JSON) wire form. Nothing is guessed: every
value already carries its own type, so an export taken in this format imports
back unchanged. This is the format to use when the data matters.
Convenience — CSV and plain (unmarshalled) JSON. These carry no type
information, so DynoTable infers a type per column and shows you what it picked
before you commit. Convenient, and lossy in documented ways — see
Where convenience files lose information.
Columns and types
The file's headers become attribute names. The preview lists every column with the type DynoTable inferred. Right-click a column header to rename it if the header doesn't match your attribute name, or to change its Data type when the inferred one isn't what you want — a product code made only of digits, say, that has to stay text rather than become a number.
The type list only offers what that column's values can actually become, so a column of plain text won't offer Map or List. If a column has just one possible type, no list appears. There's no mapping screen beyond this.
Your file must supply the table's full primary key. A row missing a key attribute, or carrying the wrong type for one, is refused by name.
Nothing is written until the whole file passes
Import reads the file twice. The first pass validates every row and writes nothing; only if the file passes does the second pass write.
- Problems are reported with line numbers (or item positions, for a JSON array), up to 20 at a time.
- Two rows with the same key in one file are refused, and you're shown both positions — DynamoDB would silently keep only the last one.
- Fix the file and press Import again; the dialog stays on the file you picked.
Importing replaces matching items
An imported row replaces any existing item with the same primary key, attribute for attribute — it isn't merged into it. Attributes the old item had and the file doesn't are gone.
Import also does not go through staging, so there's no review step and no revert. Unlike a staged edit, an import can't be undone from the app's history. On data you care about, import into a copy of the table first and check the result.
Limits
| Limit | Value |
|---|---|
| CSV / NDJSON file size | 250 MB |
A single .json array | 50 MB — use NDJSON above that |
| Rows per import | 2,000,000 |
| One item | 400 KB (DynamoDB's own ceiling) |
A .json file holds one big array that has to be parsed whole, which is why its
cap is lower. NDJSON — one item per line — streams instead, so it takes the full
250 MB.
Where convenience files lose information
These apply to CSV and plain JSON only. The marshalled DynamoDB-JSON format has none of them.
- Types are inferred from a sample of roughly the first 200 rows. A column that looks numeric there but turns non-numeric later in the file is refused during validation — the fix is to correct the file.
- Sets and binary can't be expressed in CSV, so they can't be imported from one.
- Empty cells are skipped, not written as empty strings. An item simply won't have that attribute.
- Maps and lists survive the trip. Export writes them into a CSV cell as JSON text, and import recognises that text and rebuilds the structure. If a column is genuinely text that happens to look like JSON, the preview shows what it became and you can set that column's Data type back to String.
- Very large numbers in plain JSON lose precision before DynoTable ever sees them — that's JSON's own limitation. Use DynamoDB-JSON for IDs and amounts that must stay exact.
- Spreadsheet-safety marks are handled on the way back in. Export prefixes
cells that a spreadsheet would treat as formulas with an apostrophe. On
import,
'-5becomes the number-5and'+7comes back as the text+7— but a genuine formula like'=SUM(A1)keeps its apostrophe, permanently. Removing it would re-arm the thing the mark exists to defuse.
Progress, cancelling, and failures
A running import appears in the Activity dock at the bottom of the sidebar with live progress, and keeps going while you work in other tabs. You can Stop it from there; rows already written stay written.
If DynamoDB throttles the table hard enough that some rows can't be written even after retries, the import finishes and tells you how many rows could not be written. Re-running the same file is safe — rows that did land are simply written again with the same values.
Import entries stay in the dock until you dismiss them: an import produces no file to point at, so that row is the only record that the run finished.


