Qore CsvUtil Module Reference  1.7
CsvUtil::CsvIterator Class Reference

The CsvIterator class allows CSV sources to be iterated on a record basis. The source of the input data is either a AbstractLineIterator object or an InputStream object. More...

Inheritance diagram for CsvUtil::CsvIterator:

Public Member Methods

 constructor (Qore::AbstractLineIterator li, *hash opts)
 Creates the CsvIterator in single-type mode with general line iterator to read and an option hash. More...
 
 constructor (Qore::AbstractLineIterator li, hash spec, hash opts)
 Creates the CsvIterator in multi-type mode with general line iterator to read and optionally an option hash. More...
 
 constructor (Qore::InputStream input, string encoding='UTF-8', *hash opts)
 Creates the CsvIterator from an InputStream, the input encoding, and optionally an option hash. More...
 
 constructor (Qore::InputStream input, string encoding='UTF-8', hash spec, hash opts)
 Creates the CsvIterator in multi-type mode from an InputStream, the record specification, the input encoding, and optionally an option hash. More...
 
- Public Member Methods inherited from CsvUtil::AbstractCsvIterator
 constructor (AbstractLineIterator li, *hash opts)
 creates the AbstractCsvIterator with an option hash in single-type mode More...
 
 constructor (AbstractLineIterator li, hash spec, hash opts)
 creates the AbstractCsvIterator with an option hash in multi-type mode More...
 
*list< stringgetHeaders ()
 Returns the current record headers or NOTHING if no headers have been detected or saved yet. More...
 
*list< stringgetHeaders (string type)
 Returns a list of headers for the given record or NOTHING if the record is not recognized. More...
 
string getQuote ()
 Returns the current quote string. More...
 
string getRawLine ()
 Returns the current line 'as it is', i.e. the original string. More...
 
list< *stringgetRawLineValues ()
 Returns the list of raw string values of the current line. More...
 
hash< auto > getRecord (bool extended)
 Returns the current record as a hash. More...
 
hash< auto > getRecord ()
 Returns the current record as a hash. More...
 
auto getRecordList ()
 Returns the current record as a list. More...
 
*hash< string, AbstractDataField > getRecordType ()
 Returns the description of the record type, if any.
 
string getSeparator ()
 Returns the current separator string. More...
 
hash< auto > getValue ()
 Returns the current record as a hash. More...
 
string identifyType (list< auto > rec)
 Identify a fixed-length line type using identifyTypeImpl(); may be overridden if necessary. More...
 
int index ()
 Returns the row index being iterated, which does not necessarily correspond to the line number when there are header rows and blank lines are skipped. More...
 
int lineNumber ()
 Returns the current iterator line number in the file (the first line is line 1) or 0 if not pointing at a valid element. More...
 
auto memberGate (string name)
 Returns the given column value for the current row. More...
 
bool next ()
 Moves the current line / record position to the next line / record; returns False if there are no more lines to iterate. More...
 
 peek ()
 Reads a single row without moving the index position. More...
 

Additional Inherited Members

- Private Member Methods inherited from CsvUtil::AbstractCsvIterator
list< *stringgetLineAndSplit ()
 Read line split by separator/quote into list.
 
*string identifyTypeImpl (list< auto > rec)
 Identify a input record, given the raw line string. This method performs a lookup to a precalculated table based on number of records (see constructor()). In case different criteria are needed, eg. when two line types in a spec have the same record number and no unique resolving rule are specified, this method needs to be overridden, otherwise it will throw an exception because the precalculated mapping will be empty. More...
 
hash< auto > parseLine ()
 Parses a line in the file and returns a processed list of the fields.
 
 prepareFieldsFromHeaders (*list headers)
 match headers provided at csv header or in options, never called for multi-type because header_names is False
 
 processCommonOptions (*hash opts, int C_OPTx)
 process common options and and assing internal fields
 
 processSpec (hash spec)
 process specification and assing internal data for resolving
 
- Private Attributes inherited from CsvUtil::AbstractCsvIterator
const Options
 valid options for the object (a hash for quick lookups of valid keys)
 

Detailed Description

The CsvIterator class allows CSV sources to be iterated on a record basis. The source of the input data is either a AbstractLineIterator object or an InputStream object.

See also

Member Function Documentation

◆ constructor() [1/4]

CsvUtil::CsvIterator::constructor ( Qore::AbstractLineIterator  li,
*hash  opts 
)

Creates the CsvIterator in single-type mode with general line iterator to read and an option hash.

Parameters
liline iterator of CSV file to read
optsa hash of optional options; see AbstractCsvIterator Constructor Option Hash Overview for more information
Exceptions
ABSTRACTCSVITERATOR-ERRORinvalid or unknown option; invalid data type for option; "header_names" is True and "header_lines" is 0 or "headers" is also present; unknown field type

◆ constructor() [2/4]

CsvUtil::CsvIterator::constructor ( Qore::AbstractLineIterator  li,
hash  spec,
hash  opts 
)

Creates the CsvIterator in multi-type mode with general line iterator to read and optionally an option hash.

Parameters
liline iterator of CSV file to read
speca hash of field and type definition; see Option Field Hash for more information
optsa hash of optional options; see AbstractCsvIterator Constructor Option Hash Overview for more information
Exceptions
ABSTRACTCSVITERATOR-ERRORinvalid or unknown option; invalid data type for option; "header_names" is True and "header_lines" is 0 or "headers" is also present; unknown field type

◆ constructor() [3/4]

CsvUtil::CsvIterator::constructor ( Qore::InputStream  input,
string  encoding = 'UTF-8',
*hash  opts 
)

Creates the CsvIterator from an InputStream, the input encoding, and optionally an option hash.

Parameters
inputthe InputStream providing data to iterate
encodingthe encoding of the input stream
optsa hash of optional options; see AbstractCsvIterator Constructor Option Hash Overview for more information
Exceptions
ABSTRACTCSVITERATOR-ERRORinvalid or unknown option; invalid data type for option; "header_names" is True and "header_lines" is 0 or "headers" is also present; unknown field type

◆ constructor() [4/4]

CsvUtil::CsvIterator::constructor ( Qore::InputStream  input,
string  encoding = 'UTF-8',
hash  spec,
hash  opts 
)

Creates the CsvIterator in multi-type mode from an InputStream, the record specification, the input encoding, and optionally an option hash.

Parameters
inputthe InputStream providing data to iterate
encodingthe encoding of the input stream
speca hash of field and type definition; see Option Field Hash for more information
optsa hash of optional options; see AbstractCsvIterator Constructor Option Hash Overview for more information
Exceptions
ABSTRACTCSVITERATOR-ERRORinvalid or unknown option; invalid data type for option; "header_names" is True and "header_lines" is 0 or "headers" is also present; unknown field type