SQL * Loader is a data migration tool provided by the Oracle database system. It provides a command line method that allows you to load a large amount of data into the Oracle database in batches. Although both the Oracle database and the SQL Server database provide graphical interface import tools, the graphical interface has a major disadvantage, that is, it cannot be directly referenced by foreground programs. The command line import module can be directly called by the foreground application. This is also one of the reasons why SQL * Loader becomes one of the most common tools in the Oracle database system.
SQL * Loader has the following advantages:
First, it can be directly called by the foreground application. For example, the open-source COMPIERE enterprise management application system uses the Oracle database system. In the COMPIERE application system, data import is a powerful function. It can not only import data according to the existing template, but also customize the import format. This is very useful when the system imports basic data. However, the development of this function is really simple, because it basically calls the SQL * Loader module in the background database system directly. The command line mode import module can be directly called by foreground applications, which is its biggest advantage.
Second, you can import a large amount of data from an existing file. Using the SQL * Loader tool, you can import a large number of records from an existing file, such as a comma delimiter file or a fixed-width file, to the Oracle database system according to certain rules. The import efficiency is much higher than the graphic interface.
Third, multiple data files can be merged into one file. We all know that in Oracle databases, the data required by a database application can be stored in multiple data files to achieve high database performance and high database security. However, sometimes we may need to combine these data files into one. At this time, we can use the SQL * Loader tool to merge them.
Fourth, repair and detach bad records. Sometimes, the data to be imported may conflict with the data table in the Oracle database system, resulting in data import failure. If the data field to be imported is too long and exceeds the maximum length limit of the data table, data import may fail. Using the SQL * Loader import tool, you can separate the records that do not comply with the rules and store them in an independent file. Data that meets the rules can be imported normally. In this way, the data import accuracy can be improved.
Next, let's take a look at how to use this Oracle database system as a good helper for us.
Generally, the SQL * Loader module requires at least two files for use.
First, data files. A data file, as its name implies, is a collection of data to be imported. For the Oracle system, it supports data files in multiple formats, such as text files such as comma separator, TAB key separator or semicolon separator, and fixed-width text files. However, in practice, most text files are separated by commas.
The second is the control file. The control file is used to establish a one-to-one correspondence between data files and Oralce data table fields. Simply put, putting a certain content in the data file on the field in the Oracle data table is the main role of the control file.
There is also a file, which is also very useful, called a bad file. If the bad file is specified in the command line tool, some records that failed to be imported will be saved in the bad file during the import process. Therefore, for database administrators, this file is sometimes more practical than data import log files. Therefore, the author suggests that if an enterprise has a high requirement on data import accuracy, it is best to specify this bad file when using SQL * Loader to import data. This is of great practical value for us to check the accuracy of the imported data.
To better use this import tool, I have the following suggestions:
1. When creating a data file, pay attention to the limitations of the original data table. That is to say, the records in the data file must meet certain constraints of the data table. Otherwise, data that does not meet the conditions cannot be imported. If you need to consider whether the data type is consistent, whether the field length exceeds the limit, whether the primary key or foreign key constraints are violated, and so on. Only records that meet these constraints can be imported successfully. Otherwise, data cannot be loaded successfully. To avoid this situation, I suggest specifying "bad file" when using this tool ". Only in this way can the database write some failed records to the specified file during the re-import process, so that we can adjust it, then, load the data that does not comply with the rules into the database.
2. When designing the basic data import function for foreground applications, it is best to directly use this module. This module is well integrated with the Oracle database, ensuring the accuracy of imported data to the maximum extent. In addition, it can save a lot of foreground program code. However, it is a pity that the SQL * Loader module is an application module exclusive to Oracle databases. That is to say, only applications on the Oracle database platform can be called directly. If an application supports multiple database platforms, you must note that this function is not as common as an SQL statement.
3. Before importing data, it is best to back up the data first. Whether it is a graphical data import tool or a command line data import tool, there is a basic principle that everyone must comply with so that before batch data import, the database must be backed up first. This minimizes the impact of data import errors.
4. strictly restrict data import permissions. Although the SQL * Loader application module can be restricted in the background database, it is best to control it in the foreground application. For example, in the foreground application, only the system administrator can access the basic data import window. Because of the database access permissions, it is more flexible to implement at the front-end. When the background is fixed, the front-end system permission design often loses flexibility. This is something we should avoid when designing databases and front-end applications.