Import
The import page at /admin/import posts CSV rows into one or more tables
through PostTableDataBulk. It is reachable from the navbar by any account
that holds an insert grant on some data: object.
The form
Section titled “The form”profile_name— the target profile;table_names— one or more table names, comma-separated;csv_data— the CSV, pasted or uploaded.
All three are required. The upload body is limited to 128 MB.
CSV shape
Section titled “CSV shape”The parser accepts standard quoted CSV, including quoted commas, escaped double quotes, and multi-line quoted values.
- Single table — row 1 is the column header, followed by data rows.
- Multiple tables — row 1 is a table-header row (only the selected table names), row 2 is the column-header row, followed by data rows. Table and column header rows must have the same length, and every data row must match the header width.
A CSV with headers but no data rows is refused.
Importable columns
Section titled “Importable columns”Only exportable columns can be imported: primary keys and the system columns
id, deleted, and created_at are excluded. Empty values become NULL.
Boolean columns accept true/t/1/yes/y and false/f/0/no/n; integer columns
are parsed as whole numbers; everything else is treated as a string.
How it writes
Section titled “How it writes”Rows are grouped per target table, converted to typed values, and posted in chunks of 1,000 rows per bulk request. On success the page reports the number of rows inserted, the number of data rows processed, and the number of tables written. A backend refusal — including a validation failure on a row — is rendered inline on the page.