Escribal
Back to Docs

CSV / TSV

Saving & exporting

This group writes a loaded CSV/TSV table out to a file — as CSV/TSV (with or without headers, a custom delimiter, or a specific encoding), appended to an existing file, split into several files, or converted to JSON or XML. Unlike the other CSV/TSV groups, these instructions don’t change the loaded table — they produce an output file at the path you give and leave the document as it is, so you can keep working with it afterward.

Prerequisite: a CSV/TSV document must already be loaded — created with Create CSV/TSV file or opened with one of the Reading instructions. These instructions read that loaded document and write it out; they don’t create or modify it.

These concepts recur across the instructions in this group; they are explained here once.

  • Document: the Document key points to the loaded CSV/TSV these instructions read and write out. If you leave it empty, the current document is used (the one instructions work on by default). If the key isn’t loaded, the instruction does nothing and no file is written.

  • These write files directly. Unlike the filtering and editing groups, saving and exporting create an output file immediately at the path you type — they are terminal steps. The loaded table is left untouched.

  • Type the full file name. The File path is used exactly as written, including the extension — e.g. C:\out\report.csv, report.tsv, data.json. No extension is added for you. (Split Into Files is the exception — it builds file names for you inside a folder.)

  • With or without headers. A table can be loaded with headers (each row carries its column names) or without (plain rows). Save File with Include headers on, Split Into Files and Export To Xml need the table loaded with headers — on a headerless table they produce an empty or columnless result. The others work either way.

  • Delimiter: CSV uses a comma; use a tab for TSV, or a semicolon, pipe, etc. Leave it at the default unless the program that reads the file needs a specific separator.

  • Overwrite vs append: the Save… and Export… instructions overwrite the target file if it already exists. Append Rows is the only one that adds to the end of an existing file.

  • Save a result (saveRowCountKey / saveFileCountKey): each instruction can save how many rows it wrote (or, for Split Into Files, how many files it created) under the name you type, for later instructions to use with @name. Leave it empty and nothing is saved.

  • Dynamic values @name: the text fields (File path, Delimiter, Encoding, element names, and so on) accept a saved value — type @ followed by its name and the engine substitutes it at run time.

  • “From variable” fields: only Split Into Files has a number field (Rows per file), with a companion …key field. A number field can’t take @name, so this is its equivalent:

    • If you leave the …key field empty, the number typed in the normal field is used.
    • If you fill it in with the name of a saved value, the engine ignores the normal field and reads the number from that variable.

    This is mainly for chaining instructions. If you only work with fixed values, you can ignore it.

Append Rows .csv

Adds the loaded table’s rows to the end of an existing CSV file without overwriting it.

When to use it: to keep growing a running file — e.g. append each batch to a master log or export.

Parameter Meaning Default Required
Document key The loaded CSV/TSV to write out. Empty = current document (accepts @name) (empty) No
File path The file to append to (accepts @name) (empty) Yes
Delimiter The separator used in the file (accepts @name) , No
Encoding The file’s character encoding — must match the file utf-8 No
Save row count key Saves how many rows were appended (empty) No

Important behavior: if File path is empty (or the document isn’t loaded) nothing happens. If the file doesn’t exist yet (or is empty) it is created, and a header row is written only if the table was loaded with headers. When appending to a file that already has content, no header row is added. The Encoding must match the one the file was created with, or the text can be garbled. Encoding options: utf-8, utf-8-bom, iso-8859-1, windows-1252.


Export To Json .csv

Writes the loaded table to a JSON file, using the same structure held in memory — a list of row objects when the table was loaded with headers, or a list of value lists when loaded without.

When to use it: to hand the data to a program, API, or config that expects JSON.

Parameter Meaning Default Required
Document key The loaded CSV/TSV to export. Empty = current document (accepts @name) (empty) No
File path The .json file to write (accepts @name) (empty) Yes
Pretty print If yes, indent for readability; if no, one compact line yes No
Pretty print (from variable) Reads the yes/no value from a saved value (empty) No
Save row count key Saves how many rows were written (empty) No

Important behavior: if File path is empty (or the document isn’t loaded) nothing happens. The file is written as UTF-8 (no byte-order mark) and overwrites any existing file at the path.


Export To Xml .csv

Writes the loaded table to an XML file — one element per row, one child element per column.

When to use it: to feed systems or tools that consume XML.

Parameter Meaning Default Required
Document key The loaded CSV/TSV to export. Empty = current document (accepts @name) (empty) No
File path The .xml file to write (accepts @name) (empty) Yes
Root element name Name of the wrapping element (accepts @name) Records No
Row element name Name of each row’s element (accepts @name) Record No
Pretty print If yes, indent for readability yes No
Pretty print (from variable) Reads the yes/no value from a saved value (empty) No
Save row count key Saves how many rows were written (empty) No

Important behavior: if File path is empty (or the document isn’t loaded) nothing happens. Requires the table loaded with headers — the column names become the child element names, so a headerless table yields rows with no child elements. Column names are cleaned into valid XML tags: letters, digits and _ are kept, other characters become _, a name starting with a digit is prefixed with _, and an empty name becomes col1, col2, … Written as UTF-8; overwrites an existing file.


Save File .csv

Writes the loaded table to a new CSV/TSV file, choosing the header row, the separator and the character encoding in one instruction.

When to use it: the standard “save” for a CSV/TSV — and the one to use whenever the destination needs something specific: a semicolon or a tab instead of a comma, no header line, or an encoding such as Windows-1252 or UTF-8 with a BOM. All three choices combine freely.

Parameter Meaning Default Required
Document key The loaded CSV/TSV to write out. Empty = current document (accepts @name) (empty) No
File path The file to write (accepts @name) (empty) Yes
Include headers If yes, write a header row first yes No
Delimiter The separator to use — , for CSV, a tab for TSV, ;, |, … (accepts @name) , No
Encoding The character encoding, chosen from a fixed list: UTF-8 · UTF-8 with BOM · ISO-8859-1 (Latin-1) · Windows-1252 UTF-8 No
Include headers (from variable) Reads the yes/no value from a saved value (empty) No
Save row count key Saves how many rows were written (empty) No

Important behavior: if File path is empty (or the document isn’t loaded) nothing happens, and it overwrites an existing file. With Include headers on, the table must have been loaded with headers; with it off, the data rows are written as-is, whether the table was loaded with headers or without. UTF-8 with BOM adds a byte-order mark (which helps spreadsheet apps recognize UTF-8); the other options write without one.


Split Into Files .csv

Splits the loaded table into several smaller CSV files — either a fixed number of rows each, or one file per distinct value of a column.

When to use it: to break a large export into manageable pieces, or to separate rows by category — e.g. one file per country or per month.

Parameter Meaning Default Required
Document key The loaded CSV/TSV to split. Empty = current document (accepts @name) (empty) No
Output folder The folder the files are written into (accepts @name) (empty) Yes
Base file name The start of each generated file name (accepts @name) output No
Split mode rows (fixed size) or column (one file per value) (accepts @name) rows No
Rows per file In rows mode, how many rows per file 1000 No
Split column name In column mode, the column whose values group the rows (accepts @name) (empty) No
Delimiter The separator to use (accepts @name) , No
Rows per file (from variable) (from variable) reads the rows-per-file from a saved value instead of the field above (empty) No
Save file count key Saves how many files were created (empty) No

Important behavior: if Output folder is empty (or the document isn’t loaded) nothing happens; the folder is created if it doesn’t exist. Requires the table loaded with headers — every output file starts with the header row. In rows mode files are named <base>_0001.csv, <base>_0002.csv, … (a Rows per file of 0 or less falls back to 1000). In column mode files are named <base>_<value>.csv, one per distinct value of Split column name (characters not allowed in file names are replaced with _); if the named column isn’t found, all rows go into a single <base>__empty.csv. Output files always use the .csv extension, and existing files with the same names are overwritten.


This documentation is the help of the application, and it comes underCreative Commons Attribution 4.0.