Record sets are not tables, even if tables can be easily emulated using records having the same fields in the same order. For example:
a: value b: value c: value a: value b: value c: value ...
There are several ways records are more flexible than tables:
Since comma-separated-values files contain tables, the rec2csv
utility implements an algorithm that deals with the previous
difficulties, to generate a table that is what the user expects
(likewise).
The algorithm is the following. The utility first scans the specified record set, building a list with the names that will become the table header. For each field, a header is added with the form:
FIELDNAME[_N]
where N is a number in the range 2..inf
and is the “index” of
the field in its containing record plus one. For example, consider
the following record set:
a: a1 b: b11 b: b12 c: c1 a: a2 b: b2 d: d2
The corresponding list of headers being:
a b b_2 c a b d
Then duplicates are removed:
a b b_2 c d
The resulting list of headers is then used to build the table in the generated csv file. In this case:
"a","b","b_2","c","d" "a1","b11","b12","c1", "a2","b2",,,"d2"
Note how missing fields are implemented as empty rows in the generated csv.