类 DatabaseLoader

java.lang.Object
weka.core.converters.AbstractLoader
weka.core.converters.DatabaseLoader
所有已实现的接口:
Serializable, BatchConverter, DatabaseConverter, IncrementalConverter, Loader, OptionHandler, RevisionHandler

public class DatabaseLoader extends AbstractLoader implements BatchConverter, IncrementalConverter, DatabaseConverter, OptionHandler
Reads Instances from a Database. Can read a database in batch or incremental mode.
In inremental mode MySQL and HSQLDB are supported.
For all other DBMS set a pseudoincremental mode is used:
In pseudo incremental mode the instances are read into main memory all at once and then incrementally provided to the user.
For incremental loading the rows in the database table have to be ordered uniquely.
The reason for this is that every time only a single row is fetched by extending the user query by a LIMIT clause.
If this extension is impossible instances will be loaded pseudoincrementally. To ensure that every row is fetched exaclty once, they have to ordered.
Therefore a (primary) key is necessary.This approach is chosen, instead of using JDBC driver facilities, because the latter one differ betweeen different drivers.
If you use the DatabaseSaver and save instances by generating automatically a primary key (its name is defined in DtabaseUtils), this primary key will be used for ordering but will not be part of the output. The user defined SQL query to extract the instances should not contain LIMIT and ORDER BY clauses (see -Q option).
In addition, for incremental loading, you can define in the DatabaseUtils file how many distinct values a nominal attribute is allowed to have. If this number is exceeded, the column will become a string attribute.
In batch mode no string attributes will be created.

Valid options are:

 -url <JDBC URL>
  The JDBC URL to connect to.
  (default: from DatabaseUtils.props file)
 -user <name>
  The user to connect with to the database.
  (default: none)
 -password <password>
  The password to connect with to the database.
  (default: none)
 -Q <query>
  SQL query of the form
   SELECT <list of columns>|* FROM <table> [WHERE]
  to execute.
  (default: Select * From Results0)
 -P <list of column names>
  List of column names uniquely defining a DB row
  (separated by ', ').
  Used for incremental loading.
  If not specified, the key will be determined automatically,
  if possible with the used JDBC driver.
  The auto ID column created by the DatabaseSaver won't be loaded.
 -I
  Sets incremental loading
版本:
$Revision: 11199 $
作者:
Stefan Mutter (mutter@cs.waikato.ac.nz)
另请参阅:
  • 构造器详细资料

    • DatabaseLoader

      public DatabaseLoader() throws Exception
      Constructor
      抛出:
      Exception - if initialization fails
  • 方法详细资料

    • globalInfo

      public String globalInfo()
      Returns a string describing this Loader
      返回:
      a description of the Loader suitable for displaying in the explorer/experimenter gui
    • reset

      public void reset() throws Exception
      Resets the Loader ready to read a new data set
      指定者:
      reset 在接口中 Loader
      覆盖:
      reset 在类中 AbstractLoader
      抛出:
      Exception - if an error occurs while disconnecting from the database
    • resetStructure

      public void resetStructure()
      Resets the structure of instances
    • setQuery

      public void setQuery(String q)
      Sets the query to execute against the database
      参数:
      q - the query to execute
    • getQuery

      public String getQuery()
      Gets the query to execute against the database
      返回:
      the query
    • queryTipText

      public String queryTipText()
      the tip text for this property
      返回:
      the tip text
    • setKeys

      public void setKeys(String keys)
      Sets the key columns of a database table
      参数:
      keys - a String containing the key columns in a comma separated list.
    • getKeys

      public String getKeys()
      Gets the key columns' name
      返回:
      name of the key columns'
    • keysTipText

      public String keysTipText()
      the tip text for this property
      返回:
      the tip text
    • setUrl

      public void setUrl(String url)
      Sets the database URL
      指定者:
      setUrl 在接口中 DatabaseConverter
      参数:
      url - string with the database URL
    • getUrl

      public String getUrl()
      Gets the URL
      指定者:
      getUrl 在接口中 DatabaseConverter
      返回:
      the URL
    • urlTipText

      public String urlTipText()
      the tip text for this property
      返回:
      the tip text
    • setUser

      public void setUser(String user)
      Sets the database user
      指定者:
      setUser 在接口中 DatabaseConverter
      参数:
      user - the database user name
    • getUser

      public String getUser()
      Gets the user name
      指定者:
      getUser 在接口中 DatabaseConverter
      返回:
      name of database user
    • userTipText

      public String userTipText()
      the tip text for this property
      返回:
      the tip text
    • setPassword

      public void setPassword(String password)
      Sets user password for the database
      指定者:
      setPassword 在接口中 DatabaseConverter
      参数:
      password - the password
    • getPassword

      public String getPassword()
      Returns the database password
      返回:
      the database password
    • passwordTipText

      public String passwordTipText()
      the tip text for this property
      返回:
      the tip text
    • setSource

      public void setSource(String url, String userName, String password)
      Sets the database url, user and pw
      参数:
      url - the database url
      userName - the user name
      password - the password
    • setSource

      public void setSource(String url)
      Sets the database url
      参数:
      url - the database url
    • setSource

      public void setSource() throws Exception
      Sets the database url using the DatabaseUtils file
      抛出:
      Exception - if something goes wrong
    • connectToDatabase

      public void connectToDatabase()
      Opens a connection to the database
    • getStructure

      public Instances getStructure() throws IOException
      Determines and returns (if possible) the structure (internally the header) of the data set as an empty set of instances.
      指定者:
      getStructure 在接口中 Loader
      指定者:
      getStructure 在类中 AbstractLoader
      返回:
      the structure of the data set as an empty set of Instances
      抛出:
      IOException - if an error occurs
    • getDataSet

      public Instances getDataSet() throws IOException
      Return the full data set in batch mode (header and all intances at once).
      指定者:
      getDataSet 在接口中 Loader
      指定者:
      getDataSet 在类中 AbstractLoader
      返回:
      the structure of the data set as an empty set of Instances
      抛出:
      IOException - if there is no source or parsing fails
    • getNextInstance

      public Instance getNextInstance(Instances structure) throws IOException
      Read the data set incrementally---get the next instance in the data set or returns null if there are no more instances to get. If the structure hasn't yet been determined by a call to getStructure then method does so before returning the next instance in the data set.
      指定者:
      getNextInstance 在接口中 Loader
      指定者:
      getNextInstance 在类中 AbstractLoader
      参数:
      structure - the dataset header information, will get updated in case of string or relational attributes
      返回:
      the next instance in the data set as an Instance object or null if there are no more instances to be read
      抛出:
      IOException - if there is an error during parsing
    • getOptions

      public String[] getOptions()
      Gets the setting
      指定者:
      getOptions 在接口中 OptionHandler
      返回:
      the current setting
    • listOptions

      public Enumeration listOptions()
      Lists the available options
      指定者:
      listOptions 在接口中 OptionHandler
      返回:
      an enumeration of the available options
    • setOptions

      public void setOptions(String[] options) throws Exception
      Sets the options. Valid options are:

       -url <JDBC URL>
        The JDBC URL to connect to.
        (default: from DatabaseUtils.props file)
       -user <name>
        The user to connect with to the database.
        (default: none)
       -password <password>
        The password to connect with to the database.
        (default: none)
       -Q <query>
        SQL query of the form
         SELECT <list of columns>|* FROM <table> [WHERE]
        to execute.
        (default: Select * From Results0)
       -P <list of column names>
        List of column names uniquely defining a DB row
        (separated by ', ').
        Used for incremental loading.
        If not specified, the key will be determined automatically,
        if possible with the used JDBC driver.
        The auto ID column created by the DatabaseSaver won't be loaded.
       -I
        Sets incremental loading
      指定者:
      setOptions 在接口中 OptionHandler
      参数:
      options - the options
      抛出:
      Exception - if options cannot be set
    • getRevision

      public String getRevision()
      Returns the revision string.
      指定者:
      getRevision 在接口中 RevisionHandler
      返回:
      the revision
    • main

      public static void main(String[] options)
      Main method.
      参数:
      options - the options