Class Import

  • All Implemented Interfaces:
    java.lang.AutoCloseable, java.sql.ResultSet, java.sql.Wrapper, AwareVTI

    public class Import
    extends ImportAbstract
    This class implements import of data from a URL into a table. Import functions provided here in this class shouble be called through Systement Procedures. Import uses VTI , which is supprted only through Systemem procedures mechanism.
    • Field Detail

      • _importCounter

        private static int _importCounter
      • _importers

        private static java.util.Hashtable<java.lang.Integer,​Import> _importers
      • inputFileName

        private java.lang.String inputFileName
      • skip

        private static short skip
    • Constructor Detail

      • Import

        public Import​(java.lang.String inputFileName,
                      java.lang.String columnDelimiter,
                      java.lang.String characterDelimiter,
                      java.lang.String codeset,
                      int noOfColumnsExpected,
                      java.lang.String columnTypes,
                      boolean lobsInExtFile,
                      int importCounter,
                      java.lang.String columnTypeNames,
                      java.lang.String udtClassNamesString)
               throws java.sql.SQLException
        Constructor to Invoke Import from a select statement
        Parameters:
        inputFileName - The URL of the ASCII file from which import will happen
        Throws:
        java.sql.SQLException - on error
    • Method Detail

      • doImport

        private void doImport()
                       throws java.lang.Exception
        Throws:
        java.lang.Exception
      • importTable

        public static void importTable​(java.sql.Connection connection,
                                       java.lang.String schemaName,
                                       java.lang.String tableName,
                                       java.lang.String inputFileName,
                                       java.lang.String columnDelimiter,
                                       java.lang.String characterDelimiter,
                                       java.lang.String codeset,
                                       short replace,
                                       boolean lobsInExtFile,
                                       short... extraArgs)
                                throws java.sql.SQLException
        SYSCS_IMPORT_TABLE system Procedure from ij or from a Java application invokes this method to perform import to a table from a file. The extraArgs parameter is variadic, and is used when this method is called from SYSCS_IMPORT_TABLE_BULK, in which case extraArgs[0] specifies the number of header lines to skip.
        Parameters:
        connection - The Derby database connection URL for the database containing the table
        schemaName - The name of the schema where table to import exists
        tableName - Name of the Table the data has to be imported to.
        inputFileName - Name of the file from which data has to be imported.
        columnDelimiter - Delimiter that seperates columns in the file
        characterDelimiter - Delimiter that is used to quiote non-numeric types
        codeset - Codeset of the data in the file
        replace - Indicates whether the data in table has to be replaced or appended.(0 - append , > 0 Replace the data)
        lobsInExtFile - true, if the lobs data is stored in an external file, and the reference to it is stored in the main import file.
        Throws:
        java.sql.SQLException - on errors
      • importData

        public static void importData​(java.sql.Connection connection,
                                      java.lang.String schemaName,
                                      java.lang.String tableName,
                                      java.lang.String insertColumnList,
                                      java.lang.String columnIndexes,
                                      java.lang.String inputFileName,
                                      java.lang.String columnDelimiter,
                                      java.lang.String characterDelimiter,
                                      java.lang.String codeset,
                                      short replace,
                                      boolean lobsInExtFile,
                                      short... extraArgs)
                               throws java.sql.SQLException
        SYSCS_IMPORT_DATA system Procedure from ij or from a Java application invokes this method to perform import to a table from a file.
        Parameters:
        connection - The Derby database connection URL for the database containing the table
        schemaName - The name of the schema where table to import exists
        tableName - Name of the Table the data has to be imported to.
        insertColumnList - Comma Seperated column name list to which data has to be imported from file.eg: 'c2,c2,'c3'.
        columnIndexes - Comma sepearted Lit Index of the columns in the file(first column starts at 1). eg: '3 ,4 , 5'
        inputFileName - Name of the file from which data has to be imported.
        columnDelimiter - Delimiter that seperates columns in the file
        characterDelimiter - Delimiter that is used to quiote non-numeric types
        codeset - Codeset of the data in the file
        replace - Indicates whether the data in table has to be replaced or appended.(0 - append , > 0 Replace the data)
        lobsInExtFile - true, if the lobs data is stored in an external file, and the reference is stored in the main import file.
        Throws:
        java.sql.SQLException - on errors
      • performImport

        private static void performImport​(java.sql.Connection connection,
                                          java.lang.String schemaName,
                                          java.lang.String insertColumnList,
                                          java.lang.String columnIndexes,
                                          java.lang.String tableName,
                                          java.lang.String inputFileName,
                                          java.lang.String columnDelimiter,
                                          java.lang.String characterDelimiter,
                                          java.lang.String codeset,
                                          short replace,
                                          boolean lobsInExtFile)
                                   throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • readHeaders

        private static java.lang.String[] readHeaders​(java.lang.String inputFileName,
                                                      java.lang.String characterDelimiter,
                                                      java.lang.String columnDelimiter,
                                                      java.lang.String codeset)
                                               throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • bumpImportCounter

        private static int bumpImportCounter()
      • formatImportError

        private static java.sql.SQLException formatImportError​(Import importer,
                                                               java.lang.String inputFile,
                                                               java.lang.Throwable t)
      • quoteStringArgument

        private static java.lang.String quoteStringArgument​(java.lang.String string)
        Quote a string argument so that it can be used as a literal in an SQL statement. If the string argument is null an SQL NULL token is returned.
        Parameters:
        string - a string or null
        Returns:
        the string in quotes and with proper escape sequences for special characters, or "NULL" if the string is null