Skip to content

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.

  • 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.

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.

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.

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.