Using UNLOAD/INPUT Unload/Input_you have probably heard this term used many times, particularly from Microrim Technical Support. Just what does Unload/Input mean and how does it work? The term Unload/Input refers to a series of R:BASE commands that allow you to: Transfer tables, forms, reports, and labels from one database to another. Correct certain database errors identified through AUTOCHK. Correct unexplained database problems that can arise, and are not identified through AUTOCHK. Recover disk space and restructure the database. The set of commands used in an Unload/Input process are: UNLOAD, INPUT, and OUTPUT. The UNLOAD Command The UNLOAD command writes the data and/or structure of a table or database to an ASCII text file that you designate through the OUTPUT command. The UNLOAD command generates an ASCII file of R:BASE commands and data. The R:BASE commands recreate the table or database structure. The unload file contains CREATE TABLE commands, for example, to recreate tables, and LOAD commands to load the data back into the tables. The data is always written in ASCII delimited format. You can look at an unload file using any ASCII text editor. In R:BASE versions 5.0 and above, unloading data from a table with a BLOB data type produces two files: the unload file named in the OUTPUT command, and a file with the same name but with the extension .LOB. The .LOB file contains the BLOB data. The output file contains a reference to the .LOB file. Never make modifications to this .LOB file, however. Both files must be located in the same drive and directory before issuing the INPUT command. The INPUT Command The INPUT command executes the R:BASE commands written to the unload file by the OUTPUT command. The INPUT command restores the unload file to the current database or creates a new database. The OUTPUT command The OUTPUT command opens a file to hold the R:BASE commands and data generated by the UNLOAD command. The file is commonly called the "unload file" or the "output file". When the UNLOAD command is completed, the OUTPUT SCREEN command is used to close the file. The OUTPUT command places the file in the current drive and directory unless otherwise specified. The commands are generally used in the following sequence: OUTPUT filename UNLOAD ALL OUTPUT SCREEN INPUT filename Depending on the result you want, the syntax will vary. Use the following examples as a guide: Transfer a Table From One Database to Another This example transfers the table customer from the CONCOMP database to another database called SAMPLE. Two unload files are created: tables.str contains the structure of the table to transfer, and tables.dat contains the data. The first step is to create the unload files: CONN Concomp SET NULL -0- OUTPUT tables.str UNLOAD STRUCTURE FOR Customer OUTPUT SCREEN OUTPUT tables.dat UNLOAD DATA FOR Customer OUTPUT SCREEN The file tables.str must be edited to change the existing database name from CONCOMP to the new database name SAMPLE. RBEdit Tables.str Locate the statement "CREATE SCHEMA AUTHOR Concomp". Change Concomp to sample. Save the changes and exit RBEdit. Now you are ready to put the table into the new database. First, create the table structure in the new database by inputting the file tables.str, then load the data CONN Sample INPUT tables.str INPUT tables.dat In this example, the table structure and data were unloaded to separate files, making it easy to edit and change the table structure information. The structure file, tables.str, is a small file; the data file, tables.dat, can be quite large. When unloading the structure of a table or a database, the unload file always references the database name. Transfer a Report, Form, or Label From One Database to Another This example demonstrates transferring a report from the CONCOMP database to the SAMPLE database. The report to be transferred is named customer. An unload file called tables.dat is created to store the data of the report. The UNLOAD command in this example references the system table SYS_REPORTS2. If you are transferring a form, reference the table SYS_FORMS2. A label transfer would reference the SYS_LABELS2 table. This example is specific to version 5.0 and above. If you are transferring from a previous version of R:BASE, the UNLOAD command references the SYS_REPORTS, SYS_FORMS, or SYS_LABELS system table instead. CONN Concomp SET NULL -0- OUTPUT tables.dat UNLOAD DATA FROM SYS_REPORTS2 + WHERE SYS_REPORT_NAME = 'Customer' OUTPUT SCREEN CONN Sample INPUT tables.dat Because only data was transferred, not structure, only one unload file was used and the file did not need to be edited. When transferring forms, reports, and labels between databases, make sure the new database does not already have a form, report, or label with the same name as the one being transferred. Correct Database Problems or Restructure the Database This example unloads the entire structure and data from the CONCOMP database. After the UNLOAD command, the original CONCOMP database is renamed to SAMPLE. The INPUT command recreates the CONCOMP database from the commands in the unload file. The unload file, tables.all, contains both the database structure and data from all the tables. CONN Concomp SET NULL -0- OUTPUT tables.all UNLOAD ALL OUTPUT SCREEN DISCO RENAME Concomp.rb* Sample.rb* INPUT tables.all For more information on the UNLOAD, INPUT, and OUTPUT commands, refer to on line Help and the R:BASE 5.0 Reference Manual.