DokuWiki

It's better when it's simple

User Tools

Site Tools


plugin:struct:csvimport

Struct Plugin

Struct Plugin: CSV Import

The Schema Editor has an Import/Export tab offering support for importing raw data into a schema using a CSV file. You have to choose which type of data you want to import or export: page, lookup or serial. Depending on the type, the CSV file will look and be handled differently, as described below.

Some general rules:

  • The first row has to contain headers matching the field names of the schema you're importing into
  • Columns with headers not matching any field name are ignored
  • Only commas are supported as separator
  • Column contents should be enclosed with double quotes
  • Double quotes can be escaped with a backslash (\) or using standard doubling of the double quotes ("")
  • Fields of Type Lookup have a special structure: they consist of a JSON encoded array with page id and row id. For example, a raw lookup value referencing a page would be [“namespace:id”,2], while the value escaped and quoted in CSV would look like this “[”“namespace:id”“,2]”
  • For multi fields, the column content will be split at commas (no support for any escaping), but lookup-type fields will be split only on the proper commas between values.
  • Content has to be in UTF-8 encoding

Additionally in page data import:

  • The column labeled pid must exist. It's used to bind the data to a proper page.
  • If there are rows with identical pids only the first one is imported and the others are omitted with the proper error message.
  • If the page with given pid doesn't exists the entire row is omitted (with the proper error message) but the import continues.
    • If, however, the respective checkbox is checked, then the page is created instead. This page-creation uses the existing namespace template if it exists or creates only a page with the pagename as first heading.
    • In the template, you can use basic bureaucracy-style placeholders for the imported struct values in the form of @@schemaname.labelname@@ or ##schemaname.labelname##. Notice that labels are case sensitive here (in contrast to using them in templates with bureaucracy).

Serial data is imported similarly to page data, with some exceptions:

  • Multiple rows with the same pid are all imported.
  • If you choose the option to create non-existing pages, the appropriate serial syntax will be added to bottom of the created page. Placeholders in page templates are not supported.

Global and serial data is added to whatever data is already stored.

With page data every imported row creates a new revision of the page.

You can use the CSV Export on the same tab to get an example CSV file.

plugin/struct/csvimport.txt · Last modified: 2020-05-14 13:26 by andi