.TH DBZ 1 "11 Feb 1992" .BY "C News" .SH NAME dbz \- operate on dbz databases of text .SH SYNOPSIS .B dbz [ .BR \- { axmc } ] [ .B \-t c ] [ .B \-l length ] [ .BR \- { qiue } ] [ .B \-f old ] [ .B \-p parms ] database file ... .SH DESCRIPTION .I Dbz is a shell-level interface to the .IR dbz (3z) database routines for indexed access to a text file. .PP The .I database file must be a text file, one line per database record, with the key the first field on the line. The .B \-t option sets the field-separator character; the default is tab. Setting the separator character to NUL (with .BR "\-t\ ''" ) makes the whole line the key. Lines must not exceed 1023 bytes in length including the newline; this limit can be increased with the .B \-l option. The limitations and restrictions of .IR dbz (3z) must also be observed; in particular, it remains the user's responsibility to ensure that no attempt is made to store two entries (whether identical or not) with the same key. .PP In the absence of options, .I dbz creates a .IR dbz (3z) index for the database; the index comprises files .IB database .pag and .IB database .dir in the same directory. Any previous index is silently overwritten. The .BR \-a , .BR \-x , .BR \-m , and .B \-c options specify other operations. .PP With .BR \-a , .I dbz appends lines from the .IR file (s) (standard input if none) to the database, updating both the text file and the indexes. .PP With .BR \-x , .I dbz reads keys from the .IR file (s) (standard input if none) and prints (on standard output) the corresponding lines, if any, from the database. The input is in the form of database lines, although only the keys are significant. The .B \-q option makes .B \-x print the input lines whose keys are found instead of the database lines; this is somewhat faster. .PP With .BR \-m , operation is the same as for .B \-x except that the keys which are \fInot\fR present in the database are printed. .PP With .BR \-c , .I dbz checks the database for internal consistency. The .B \-q option causes this check to be done more quickly but less thoroughly (each key is looked up in the index, but no check is made to be sure that the index entry points to the right place). .PP The .B \-i option suppresses the use of .IR dbz (3z)'s .I incore facility. This makes accesses slower, but keeps the files current during updating and reduces startup/shutdown overhead. .PP Normally, .I dbz checks whether a key is already in the database before adding it. The .B \-u option suppresses this check, speeding things up at the expense of safety. .PP A new index is normally created with default size, case mapping, and tagging. The default size is right for 90-100,000 records. The default case mapping is right for RFC822 message-ids. See .IR dbz (3z) for what tagging is about. (Note, these defaults can be changed when .IR dbz (3z) is installed.) .PP If the .B \-f option is given, size, case mapping, and tagging are instead initialized based on the database .IR old . This is mostly useful when creating a new generation of an existing database. (See the description of .I dbzagain in .IR dbz (3z) for details.) .PP If the .B \-p option is given, the .I parms string specifies the size, case mapping, and tagging. If .I parms is a single decimal number, that is taken as the expected number of records in the index, with case mapping and tagging defaulted. Alternatively, .I parms can be three fields\(ema decimal number, a case-mapping code character, and a hexadecimal tag mask\(emseparated by white space. The decimal number is, again, the expected number of records; 0 means ``use the default''. See .IR dbz (3z) for possible choices of case-mapping code, but in particular, .B 0 means ``no case mapping''. See .IR dbz (3z) for details on tag masks; 0 means ``use the default''. .PP If the .B \-e option is given, the decimal number in .B \-p is taken to be the exact table size, not the expected number of records, and invocation of .I dbzsize (see .IR dbz (3z)) to predict a good size for that number of records is suppressed. .PP The .B \&.pag file is normally about 6 bytes per record (based on the estimate given to .B \-p or the previous history of the .B \-f database). The .B \&.dir file is tiny. .SH SEE ALSO dbz(3z) .SH HISTORY Written at U of Toronto by Henry Spencer, for the C News project. See .IR dbz (3z) for the history of the underlying database routines. .SH BUGS There are a number of undocumented options with obscure effects, meant for debugging and regression testing of .IR dbz (3z). .PP Permissions for the index files probably ought to be taken from those of the base file. .PP The line-length limit is a blemish, alleviated only slightly by .BR \-l .