Reading a Database From a File in Small Chunks (lkt_open_dbfile)
The dbread command reads an entire database file, but there might be times when it is desirable to open a file and only read a handful of records at a time.
dvkerr_tlkt_open_dbfile( lpar_t file, lpar_t parameters,
lpar_t *filehandle, lpar_t *dbpars );
lkt_open_dbfile is called like lkt_dbread but instead of reading records, it creates a special block lpar called a file handle. The contents of this lpar must never be altered directly, but can be passed to lkt_read_records to do the actual reading.
The input lpars for lkt_open_dbfile are identical to those of lkt_dbread, with the exception is that LPAR_INT_BATCHSIZE is not supported.
Open files are closed when the associated file handle lpar is destroyed with lpar_destroy.
Input
host file (required)
is the name of a file from which the database should be read. This must be either an LPAR_STR_CSVFILE or an LPAR_STR_FWFFILE for comma separated value or fixed width field files respectively.
parameters (optional)
is a list of parameters which describe the file contents. It might contain any of the following lpars (see Reading a Database From a File (lkt_dbread) for descriptions):
| • | LPAR_STR_ENCODING |
| • | LPAR_INTARR_RECSRCHFLDS |
| • | LPAR_INT_DBNUMFIELDS |
| • | LPAR_BOOL_LEADINGKEY |
| • | LPAR_INT_KEYFIELD |
| • | LPAR_STR_KEYFIELD |
| • | LPAR_INT_INITIALKEY |
| • | LPAR_BOOL_FNAMESFIRST |
| • | LPAR_BOOL_FTYPESFIRST |
| • | LPAR_BOOL_DOMAXWORK |
| • | LPAR_INT_PARENT_KEYFIELD |
| • | LPAR_STR_PARENT_KEYFIELD |
Output
filehandle (required)
is an opaque block lpar to be used with lkt_read_records.
dbpars (optional)
is a list of database parameters determined from reading the file. These parameters are intended to be passed to the lkt_dbload command as the dbpars parameter. Extra parameters can be added to the list as necessary.
Error codes and items returned by lkt_open_dbfile
|
ARRAYLEN |
item that has the wrong length |
|
EXPECTLIST |
item that should have been a list type lpar |
|
FILEFORMAT |
a line from the file which could not be parsed |
|
IOERROR |
LPAR_STR_SYSERROR describing error |
|
PARAMVAL |
lpar that contains an illegal value |
|
PARAMCONFLICT |
lpar in conflict with an earlier lpar |