loader/sample_modules/PluginApi.js (2 lines of code) (raw):

/* Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /* dbloader gives user-created JavaScript modules extensive access to the process of loading data. Some of the things modules can do include: * add new command-line options to dbloader * customize the specification of the loader job * access a raw line of data read from the data file * access a parsed record and modify its fields, route it to a different destination table, or reject it. * receive callbacks for each row successfully loaded to the database or for each error. A module must export an init() function which receives an instance of a DataLoader object. All DataLoader methods are shown briefly here; full documentation is available in lib/DataLoader.js */ exports.init = function(dataLoader) { /* dbloader can accept command-line options that are defined by the plugin. For each option, use dataLoader.addOptionHandler here. */ /* addOptionHandler(shortForm, longForm, helpText, callback). Callback will receive (nextArg) and should return: 0 if no arguments were consumed (i.e. not even the option flag) 1 if the option flag was consumed 2 if both the option flag and next argument were consumed */ // dataLoader.addOption("-x","--extra","do extra work", // function(args,index) { return 1; }); /* onReadRecord(record) Gives the plugin access to a Domain Object that has been created by the FieldScanner. The user can modify it before it is handed to the loader. record.row holds an object containing the data parsed into fields. If you modify record.row, different values will be stored. record.class holds the Domain Object Constructor that maps the object to the database. If you change record.class, you cause the record to be stored in a different table. If onReadRecord returns false, the record will not be persisted. */ // dataLoader.onReadRecord = function(record) { // }; /* onScanLine() Gives the plugin access to a line scanned from the data file. Only lines that will be evaluated for data are delivered; not blank lines, comment lines, or skipped lines. lineNo is the physical line number in the source file. The line of data is the string from source[startPos] to source[endPos]. Note that in the random data generator (LOAD RANDOM DATA...) there is no call to onScanLine() */ // dataLoader.onScanLine = function(lineNo, source, startPos, endPos) { // }; /* onTick(stats) Gives the plugin access to the internal timer interval. This function will be called approximately once every 20 milliseconds. */ // dataLoader.onTick = function(stats) { // }; /* onRecordStored(record): Called when record has been successfully stored. */ // dataLoader.onRecordStored = function(record) { // }; /* onRecordError(record) Record has been sent to the database and caused an error; record.error will be set. */ // dataLoader.onRecordError = function(record) { // }; /* onFinished(controller) This will be called at the end of processing. It gives the plugin a chance to asynchronously close any resources. When processing is finished, the plugin must call the provided callback function. */ // dataLoader.onFinished = function(callbackOnClosed) { // callbackOnClosed(); // }; /* onSqlScan(scannerError, tokenList) Access the control file as an array of tokens from the SQL scanner. */ // dataLoader.onSqlScan = function(scannerError, tokenList) { // }; /* onSqlParse(parserError, parseTree) Access the control file as a tree of parse nodes from the SQL parser. */ // dataLoader.onSqlParse = function(parserError, parseTree) { // }; /* onLoaderJob(semanticError, loaderJob) Access the LoaderJob generated after parsing. If no SQL statement was given, then this is a blank default LoaderJob; see API in lib/LoaderJob.js. The user must fill in at least the data source and destination table. */ // dataLoader.onLoaderJob = function(semanticError, loaderJob) { // }; /* createMappings() Create additional TableMappings before connecting. */ // dataLoader.createMappings = function() { // }; }