|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectweka.core.converters.AbstractLoader
weka.core.converters.DatabaseLoader
public class DatabaseLoader
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.
-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
Loader,
Serialized Form| Constructor Summary | |
|---|---|
DatabaseLoader()
Constructor |
|
| Method Summary | |
|---|---|
void |
connectToDatabase()
Opens a connection to the database |
Instances |
getDataSet()
Return the full data set in batch mode (header and all intances at once). |
java.lang.String |
getKeys()
Gets the key columns' name |
Instance |
getNextInstance(Instances structure)
Read the data set incrementally---get the next instance in the data set or returns null if there are no more instances to get. |
java.lang.String[] |
getOptions()
Gets the setting |
java.lang.String |
getPassword()
Returns the database password |
java.lang.String |
getQuery()
Gets the query to execute against the database |
java.lang.String |
getRevision()
Returns the revision string. |
Instances |
getStructure()
Determines and returns (if possible) the structure (internally the header) of the data set as an empty set of instances. |
java.lang.String |
getUrl()
Gets the URL |
java.lang.String |
getUser()
Gets the user name |
java.lang.String |
globalInfo()
Returns a string describing this Loader |
java.lang.String |
keysTipText()
the tip text for this property |
java.util.Enumeration |
listOptions()
Lists the available options |
static void |
main(java.lang.String[] options)
Main method. |
java.lang.String |
passwordTipText()
the tip text for this property |
java.lang.String |
queryTipText()
the tip text for this property |
void |
reset()
Resets the Loader ready to read a new data set |
void |
resetStructure()
Resets the structure of instances |
void |
setKeys(java.lang.String keys)
Sets the key columns of a database table |
void |
setOptions(java.lang.String[] options)
Sets the options. |
void |
setPassword(java.lang.String password)
Sets user password for the database |
void |
setQuery(java.lang.String q)
Sets the query to execute against the database |
void |
setSource()
Sets the database url using the DatabaseUtils file |
void |
setSource(java.lang.String url)
Sets the database url |
void |
setSource(java.lang.String url,
java.lang.String userName,
java.lang.String password)
Sets the database url, user and pw |
void |
setUrl(java.lang.String url)
Sets the database URL |
void |
setUser(java.lang.String user)
Sets the database user |
java.lang.String |
urlTipText()
the tip text for this property |
java.lang.String |
userTipText()
the tip text for this property |
| Methods inherited from class weka.core.converters.AbstractLoader |
|---|
setSource, setSource |
| Methods inherited from class java.lang.Object |
|---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public DatabaseLoader()
throws java.lang.Exception
java.lang.Exception - if initialization fails| Method Detail |
|---|
public java.lang.String globalInfo()
public void reset()
throws java.lang.Exception
reset in interface Loaderreset in class AbstractLoaderjava.lang.Exception - if an error occurs while disconnecting from the databasepublic void resetStructure()
public void setQuery(java.lang.String q)
q - the query to executepublic java.lang.String getQuery()
public java.lang.String queryTipText()
public void setKeys(java.lang.String keys)
keys - a String containing the key columns in a comma separated list.public java.lang.String getKeys()
public java.lang.String keysTipText()
public void setUrl(java.lang.String url)
setUrl in interface DatabaseConverterurl - string with the database URLpublic java.lang.String getUrl()
getUrl in interface DatabaseConverterpublic java.lang.String urlTipText()
public void setUser(java.lang.String user)
setUser in interface DatabaseConverteruser - the database user namepublic java.lang.String getUser()
getUser in interface DatabaseConverterpublic java.lang.String userTipText()
public void setPassword(java.lang.String password)
setPassword in interface DatabaseConverterpassword - the passwordpublic java.lang.String getPassword()
public java.lang.String passwordTipText()
public void setSource(java.lang.String url,
java.lang.String userName,
java.lang.String password)
url - the database urluserName - the user namepassword - the passwordpublic void setSource(java.lang.String url)
url - the database url
public void setSource()
throws java.lang.Exception
java.lang.Exception - if something goes wrongpublic void connectToDatabase()
public Instances getStructure()
throws java.io.IOException
getStructure in interface LoadergetStructure in class AbstractLoaderjava.io.IOException - if an error occurs
public Instances getDataSet()
throws java.io.IOException
getDataSet in interface LoadergetDataSet in class AbstractLoaderjava.io.IOException - if there is no source or parsing fails
public Instance getNextInstance(Instances structure)
throws java.io.IOException
getNextInstance in interface LoadergetNextInstance in class AbstractLoaderstructure - the dataset header information, will get updated in
case of string or relational attributes
java.io.IOException - if there is an error during parsingpublic java.lang.String[] getOptions()
getOptions in interface OptionHandlerpublic java.util.Enumeration listOptions()
listOptions in interface OptionHandler
public void setOptions(java.lang.String[] options)
throws java.lang.Exception
-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 in interface OptionHandleroptions - the options
java.lang.Exception - if options cannot be setpublic java.lang.String getRevision()
getRevision in interface RevisionHandlerpublic static void main(java.lang.String[] options)
options - the options
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||