Comma separated format
CSV is a simple exchange format separating properties (fields) by field delimiters. As field delimiter, tab (\t), newline (\n) or semicolon (;) might be used (but not comma). In case of values containing one of those characters, values have to be enclosed in string delimiters String delimiters are also required, when the value contains string delimiters itself. In this case, string delimiters within the value have to be escaped. (e.g. "character \" is a string delimiter"). The escape character (\) will be removed before storing data.
CSV files contain any number of records (instances of a collection) terminated by new line character (\n). New line characters within values enclosed in string delimiters are not counted as instance end. CSV instances support attributes and attribute arrays, but no references or collections.
Since CSV does not require any tags, it is an efficient way of exchanging flat data files. On the other hand, it requires fields being defined in a correct sequence. CSV files must not contain data of more than one extent or weak-typed collections. Typically, CSV is used to pass complex data within an application. Thus, the Key contains CSV structured instances when not requesting another format.
Furthermore, CSV files can be accessed in exportData() and importData() functions (Property and ObjectSpace) or when opening external files by Property::openExtern().
CSV files may carry the file or data exchange schema directly in the data file (headline). The file or data exchange schema can also be defined in the dictionary or passed separately in any file schema definition format.
Limited access to CSV files is supported by defining CSV extents in the dictionary (access type AT_EXTERN). I this case, the file path is expected in an option with the extent name. No head lines and no external file description are supported for CSV extents.
In order to provide more flexible access to CSV files, a file description has to be passed explicitly to the Property::openExtern() function. In order to provide an external schema definition, any of the supported definition formats might be used (see Data Exchange schema)