readcsv
Prototype: readcsv(filename, optional_maxbytes)
Return type: data
Description:
Parses CSV data from the file filename and returns the result as a data variable.
maxbytes is optional, if specified, only the first maxbytes bytes are read from filename.
While it may seem similar to data_readstringarrayidx() and
data_readstringarray(), the readcsv() function is more capable
because it follows RFC 4180,
especially regarding quoting. This is not possible if you just split
strings on a regular expression delimiter.
The returned data is in the same format as
data_readstringarrayidx(), that is, a data container that holds a
JSON array of JSON arrays.
Arguments:
Example:
Prepare:
echo -n 1,2,3 > /tmp/csv
Run:
bundle agent main
{
vars:
# note that the CSV file has to have ^M (DOS) EOL terminators
# thus the prep step uses `echo -n` and just one line, so it will work on Unix
"csv" data => readcsv("/tmp/csv");
"csv_str" string => format("%S", csv);
reports:
"From /tmp/csv, got data $(csv_str)";
}
Output:
R: From /tmp/csv, got data [["1","2","3"]]
Note: CSV files formatted according to RFC 4180 must end with the CRLF
sequence. Thus a text file created on Unix with standard Unix tools
like vi will not, by default, have those line endings.
See also: readdata(), data_readstringarrayidx(),data_readstringarray(), parsejson(), storejson(), mergedata(), and data documentation.
History: Was introduced in 3.7.0.
