Class CsvDBLoader


  • public class CsvDBLoader
    extends DBLoader
    Implementation of DBLoader which gets its Tables by reading CSV files using the CsvLoader class and is the loader use for CSV junit tests.

    CsvDBLoader requires that the CSV files have a specific format as defined:

     list_of_csv_files : (csv_file)+
     csv_file: table_definitions
     table_definitions: (table_definition)+
     table_definition: actions table_name column_names column_types
              (file_name or nos_of_rows or rows)
     actions: (action)*
     action: '##' (ActionBefore: | ActionAfter:) action_type
     action_type: DropIndex index_name | CreateIndex index_name column_name
     table_name: '##' TableName: table_name
     column_names: '##' ColumnNames: column_name (',' column_name)*
     column_types: '##' ColumnTypes: column_types ('.' column_types)*
     file_name:'##' FileName: relative_filename ?
     nos_of_rows:'##' NosOfRows: number
     column_types: type (':' null)
     type: "INTEGER" "DECIMAL(*,*)" "SMALLINT"
           "VARCHAR(*)" "REAL" "BOOLEAN"
           "BIGINT" "DATE" "TIMESTAMP"
      rows: (row)*
      row: value (',' value)*
    
      if FileName is given, then
          there is no NosOfRows
          the file can only contains rows
      else if NosOfRows is given, then
          there is no FileName
          the number of rows in current file are rows for table
      else
          the all remaining rows in current file are rows for table
      fi
    
      comment lines start with '#'
    
     

    See the testsrc/main/mondrian/rolap/aggmatcher/BUG_1541077.csv file for an example.

    Author:
    Richard M. Emberson