A file is in variable record format when the length of each record in a character field is included at the beginning of each record in the data file. This format provides some added flexibility over the fixed record format and a performance advantage over the stream record format. For example, you can specify a data file that is to be interpreted as being in variable record format as follows:
INFILE "datafile_name" "var n"
In this example,
n specifies the number of bytes in the record length field. If
n is not specified, then SQL*Loader assumes a length of 5 bytes. Specifying
n larger than 40 results in an error.
Example 7-2 shows a control file specification that tells SQL*Loader to look for data in the data file
dat and to expect variable record format where the record's first three bytes indicate the length of the field. The
example2.dat data file consists of three physical records. The first is specified to be 009 (9) bytes long, the second is 010 (10) bytes long (plus a 1-byte newline), and the third is 012 (12) bytes long (plus a 1-byte newline). Note that newline characters are not required with the variable record format. This example also assumes a single-byte character set for the data file. For the purposes of this example, periods in
example2.dat represent spaces; the fields do not contain actual periods.
The lengths are always interpreted in bytes, even if character-length semantics are in effect for the file. This is necessary because the file could contain a mix of fields, some processed with character-length semantics and others processed with byte-length semantics. See "Character-Length Semantics".
Example 7-2 Loading Data in Variable Record Format
load data infile 'example2.dat' "var 3" into table example fields terminated by ',' optionally enclosed by '"' (col1 char(5), col2 char(7)) example2.dat: 009.396,.ty,0104922,beth, 012..68773,ben,