WEKA連線MySQL,Oracle,SQLServer
1.準備
Windows XP
jdk-1_5_0_14
weka-3-5-7.exe
SQLServer2005
mysql-6.0.0
Oracle10.2.0.1.0
Microsoft SQL Server 2005 JDBC Driver 1.2--->sqljdbc.jar
MySQL Driver for JDBC--->mysql-connector-java-5.1.6-bin.jar
Oracle Driver for JDBC--->ojdbc14.jar
2.雙擊weka-3-5-7.exe安裝weka
3.進入weka安裝目錄
3.1.解壓縮weka.jar
解壓後的目錄結構
[Weka-3-5]
|____...
|____[weka]
|____[META-INF]
|____...
|____[weka]
|____...
|____...
3.2.新建lib目錄,將資料庫Driver for JDBC(jar包)拷貝進/lib
完成後的目錄結構
[Weka-3-5]
|____...
|____[weka]
|____[META-INF]
|____...
|____[weka]
|____...
|____[lib]
|____mysql-connector-java-5.1.6-bin.jar
|____ojdbc14.jar
|____sqljdbc.jar
|____...
4.設定環境變數
WEKA_HOME
C:/Program Files/Weka-3-5
ClassPath
.;%WEKA_HOME%/lib/sqljdbc.jar;%WEKA_HOME%/lib/mysql-connector-java-5.1.6-bin.jar;%WEKA_HOME%/lib/ojdbc14.jar;%JAVA_HOME%/lib/tools.jar;%JAVA_HOME%/lib/dt.jar
設定完成後,weka就能找到放在/lib中的資料庫jar包了.
5.修改DatabaseUtils.props
進入%WEKA_HOME%/weka/weka/experiment/你會看到:
...
DatabaseUtils.props
DatabaseUtils.props.hsql
DatabaseUtils.props.mssqlserver2005
DatabaseUtils.props.mssqlserver
DatabaseUtils.props.mysql
DatabaseUtils.props.odbc
DatabaseUtils.props.oracle
DatabaseUtils.props.postgresql
...
weka執行時會使用DatabaseUtils.props
其他的如:'DatabaseUtils.props.資料庫名稱'(這些是weka提供的針對不同資料庫提供的模板)
我們先將DatabaseUtils.props隨便改成一個其他的名字,如:DatabaseUtils.props.sample
然後將DatabaseUtils.props.mysql改成DatabaseUtils.props(假設我們需要連線mysql資料庫)
開啟現在的DatabaseUtils.props可以看到以下部分:(#表示註釋)[小弟的註釋]
[版本資訊]
# Database settings for MySQL 3.23.x, 4.x
[小弟連線的是MySQL6所以改成--># Database settings for MySQL 6.x]
#
# url: http://www.mysql.com/
# jdbc: http://www.mysql.com/products/connector/j/
# author: Fracpete (fracpete at waikato dot ac dot nz)
# version: $Revision: 1.3 $
[JDBC版本--># version: $Revision: 5.1 $]
# JDBC driver (comma-separated list)
jdbcDriver=org.gjt.mm.mysql.Driver
[修改為-->jdbcDriver=com.mysql.jdbc.Driver]
# database URL
jdbcURL=jdbc:mysql://server_name:3306/database_name
[這個建議不修改,方便後面進入weka後,通過修改相應的'server_name','datebase_name'來連線相應的mysql資料庫.其實大家在這裡像這樣子jdbcURL=jdbc:mysql://localhost:3306/foodmart寫死了也沒什麼,進入weka後同樣可以修改,但顯得不夠專業不是!~]
# specific data types
# string, getString() = 0; --> nominal
# boolean, getBoolean() = 1; --> nominal
# double, getDouble() = 2; --> numeric
# byte, getByte() = 3; --> numeric
# short, getByte()= 4; --> numeric
# int, getInteger() = 5; --> numeric
# long, getLong() = 6; --> numeric
# gloat, getFloat() = 7; --> numeric
# date, getDate() = 8; --> date
# text, getString() = 9; --> string
[呵呵,這裡是重點!由於weka僅支援名詞型(nominal),數值型(numeric),字串(string),日期(date).所以我們要將現在資料庫中的資料型別對應到這四種型別上來.]
[將上面的內容改成:
# specific data types
string, getString() = 0; --> nominal
boolean, getBoolean() = 1; --> nominal
double, getDouble() = 2; --> numeric
byte, getByte() = 3; --> numeric
short, getByte()= 4; --> numeric
int, getInteger() = 5; --> numeric
long, getLong() = 6; --> numeric
gloat, getFloat() = 7; --> numeric
date, getDate() = 8; --> date
text, getString() = 9; --> string
TINYINT=3
SMALLINT=4
#SHORT=4
SHORT=5
INTEGER=5
INT=5
BIGINT=6
LONG=6
REAL=7
NUMERIC=2
DECIMAL=2
FLOAT=2
DOUBLE=2
CHAR=0
TEXT=0
VARCHAR=0
LONGVARCHAR=9
BINARY=0
VARBINARY=0
LONGVARBINARY=9
BIT=1
BLOB=9
DATE=8
TIME=8
DATETIME=8
TIMESTAMP=8
這裡參考了一些網友的帖子,自己google了一些,這裡MySQL常用的資料型別都設定好了,再也不用擔心weka不識別對應的資料型別了^-^
大家注意,上面有部分'#'要去掉哦!
在附錄中會提供小弟為大家精心準備的DatabaseUtils.props檔案:
DatabaseUtils.props.mssqlserver2005_ok
DatabaseUtils.props.mysql6_ok
DatabaseUtils.props.oracle10g_ok
檔名大家隨意,使用的時候記得改成DatabaseUtils.props就好]
# other options
CREATE_DOUBLE=DOUBLE
CREATE_STRING=TEXT
CREATE_INT=INT
checkUpperCaseNames=false
checkLowerCaseNames=false
checkForTable=true
[其他設定,暫時不用修改]
6.製作weka.jar並替換原來的jar
因為weka軟體執行時需要讀取weka.jar,所以你修改之後要重新打包jar檔案替換原來的jar才可以執行weka軟體成功連線資料庫.
6.1.從命令列進入%WEKA_HOME%/weka
6.2.執行jar cvf weka.jar weka/*.*
6.3.進入%WEKA_HOME%/weka會發現打包好了的weka.jar(沒有的請重新整理一下)
6.4.將%WEKA_HOME%/weka下的weka.jar複製到%WEKA_HOME%(建議將原來的weka.jar改名成weka.jar.sample備用,大家今後如果針對不同資料庫建立了多個weka.jar不妨將其改名成-->'weka.jar.資料庫名',用的時候將字尾去掉就行,體力活我們做一次就夠了!~)
7.執行weka
奇怪的問題:執行-->Weka 3.5(不帶控制檯)進入weka連不上資料庫(mysql,oracle,sqlserver都不行),說找不到合適的JDBC DRIVER.但執行-->Weka 3.5 (with console)則全部正常.期待達人解答!~
不理它,能用就行,畢竟現在還附送個'控制檯'!~
7.1.執行-->Weka 3.5 (with console)
7.2.選擇Applications--->Explorer
7.3.選擇Open DB...
7.4.選擇User...
根據自己的情況修改Database URL,Username,Password.
7.5.選擇Connect
注意視窗下方的Info裡的資訊!
... = true --->恭喜你,連線成功!~
... = false --->失敗!~別灰心,向上一步步地檢查,你離true不遠了!~
7.6.連線成功後游標會自動選擇Query欄,等著各位兄臺來輸入sql語句.小弟輸入一個超簡單的,然後選擇Execute執行sql語句.
7.7.執行成功後在Result欄中會有資料顯示.
7.8.選擇OK,呵呵!~weka已經捕獲了相關資料,並顯示相關資訊,接下來各位愛怎麼玩,就怎麼玩!~
7.9.如果我不寫sql語句,在連線成功後直接選擇OK,會怎麼樣?嘿嘿,weka會說連線資料庫有問題,沒有合適的驅動.什麼也不顯示.所以還是告訴它我們需要哪些資料,不然接下來就沒得玩了啦^_^
8.參考帖子
C6H5NO2
WEKA連線資料庫指南(mysql版)
http://bbs2.wekacn.org/viewtopic.php?f=2&t=216&sid=13cdd0c42079a4b719d5d54b83855780
kongter
weka連線mysql資料庫(windows xp版),無需解壓縮,無需配置DatabaseUtils.props檔案
http://bbs2.wekacn.org/viewtopic.php?f=2&t=293&sid=13cdd0c42079a4b719d5d54b83855780
ps:小弟剛開始就是使用上面的方法(由於需要對%WEKA_HOME%/RunWeka.bat進行修改,一味的追求連上資料庫,破壞了源程式的完整性.就算配好了,更換資料庫時便需要再度對其修改.因此不推薦大家使用),運氣不好,沒整出來!~
資料探勘青年(DMman)
Weka如何連線資料庫
http://blogger.org.cn/blog/more.asp?name=DMman&id=24991
ps:呵呵,這是比較正統的方法,沒有這篇帖子就沒有今天小弟的作品!~
9.附錄
這裡給大家提供較為完整的配置方案,基本上夠用.其中specific data types部分參照了各個資料庫的資料型別說明,不常用的資料型別沒有列出.(當然,有一部分比較bt的資料型別實在是不知道讓weka如何對應,如果哪位高手有更全面的設定,歡迎提供!~)
9.1.DatabaseUtils.props.mssqlserver2005_ok
# Database settings for Microsoft SQL Server 2005 Express Edition
#
# url: http://www.microsoft.com/
# jdbc: http://msdn2.microsoft.com/en-us/data/aa937724.aspx
# author: Fracpete (fracpete at waikato dot ac dot nz)
# version: $Revision: 1.2 $
# JDBC driver (comma-separated list)
jdbcDriver=com.microsoft.sqlserver.jdbc.SQLServerDriver
# database URL
jdbcURL=jdbc:sqlserver://server_name;databaseName=database_name
# specific data types
string, getString() = 0; --> nominal
boolean, getBoolean() = 1; --> nominal
double, getDouble() = 2; --> numeric
byte, getByte() = 3; --> numeric
short, getByte()= 4; --> numeric
int, getInteger() = 5; --> numeric
long, getLong() = 6; --> numeric
gloat, getFloat() = 7; --> numeric
date, getDate() = 8; --> date
text, getString() = 9; --> string
bit=1
tinyint=3
smallint=4
int=5
bigint=6
smallmoney=2
money=2
numeric=2
decimal=2
float=2
real=2
smalldatetime=8
datetime=8
timestamp=8
char=0
text=0
varchar=0
nchar=0
ntext=0
nvarchar=0
binary=0
varbinary=0
image=0
uniqueidentifier=9
rowversion=9
# other options
CREATE_DOUBLE=DOUBLE PRECISION
CREATE_STRING=VARCHAR(8000)
CREATE_INT=INT
checkUpperCaseNames=false
checkLowerCaseNames=false
checkForTable=true
9.2.DatabaseUtils.props.mysql6_ok
# Database settings for MySQL 6.x
#
# url: http://www.mysql.com/
# jdbc: http://www.mysql.com/products/connector/j/
# author: Fracpete (fracpete at waikato dot ac dot nz)
# version: $Revision: 5.1 $
# JDBC driver (comma-separated list)
jdbcDriver=com.mysql.jdbc.Driver
# database URL
jdbcURL=jdbc:mysql://server_name:3306/database_name
# specific data types
string, getString() = 0; --> nominal
boolean, getBoolean() = 1; --> nominal
double, getDouble() = 2; --> numeric
byte, getByte() = 3; --> numeric
short, getByte()= 4; --> numeric
int, getInteger() = 5; --> numeric
long, getLong() = 6; --> numeric
gloat, getFloat() = 7; --> numeric
date, getDate() = 8; --> date
text, getString() = 9; --> string
TINYINT=3
SMALLINT=4
#SHORT=4
SHORT=5
INTEGER=5
INT=5
BIGINT=6
LONG=6
REAL=7
NUMERIC=2
DECIMAL=2
FLOAT=2
DOUBLE=2
CHAR=0
TEXT=0
VARCHAR=0
LONGVARCHAR=9
BINARY=0
VARBINARY=0
LONGVARBINARY=9
BIT=1
BLOB=9
DATE=8
TIME=8
DATETIME=8
TIMESTAMP=8
# other options
CREATE_DOUBLE=DOUBLE
CREATE_STRING=TEXT
CREATE_INT=INT
checkUpperCaseNames=false
checkLowerCaseNames=false
checkForTable=true
9.3.DatabaseUtils.props.oracle10g_ok
# Database settings for Oracle 10g Express Edition
#
# url: http://www.oracle.com/
# jdbc: http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/
# author: Fracpete (fracpete at waikato dot ac dot nz)
# version: $Revision: 1.3 $
# JDBC driver (comma-separated list)
jdbcDriver=oracle.jdbc.driver.OracleDriver
# database URL
jdbcURL=jdbc:oracle:thin:@server_name:1521:database_name
# specific data types
string, getString() = 0; --> nominal
boolean, getBoolean() = 1; --> nominal
double, getDouble() = 2; --> numeric
byte, getByte() = 3; --> numeric
short, getByte()= 4; --> numeric
int, getInteger() = 5; --> numeric
long, getLong() = 6; --> numeric
gloat, getFloat() = 7; --> numeric
date, getDate() = 8; --> date
text, getString() = 9; --> string
CHAR=0
NCHAR=0
VARCHAR2=0
NVARCHAR2=0
RAW=9
NUMBER=2
BINARY_FLOAT=2
DATE=8
TIMESTAMP=8
ROWID=9
DOUBLE_PRECISION=2
# other options
CREATE_INT=INTEGER
CREATE_STRING=VARCHAR2(4000)
CREATE_DOUBLE=NUMBER
checkUpperCaseNames=true
checkForTable=true
轉自 http://blog.csdn.net/striker/article/details/3991169
相關文章
- Weka 連線MySQL資料庫MySql資料庫
- sqlserver連線oracleSQLServerOracle
- SQLSERVER 連線 ORACLESQLServerOracle
- 如何在weka中連線資料庫資料庫
- oracle連線SQLserver--通過ODBCOracleSQLServer
- mysql 連線oracleMySqlOracle
- DBeaver連線SQLServerSQLServer
- Dockerfile 修改,連線 sqlserverDockerSQLServer
- myeclipse連線sqlserverEclipseSQLServer
- [Oracle-> MySQL] Oracle通過dblink連線MySQL--Oracle 19c連線到MySQL 5.7OracleMySql
- 通過ODBC連線windows下SQLServer到UNIX oracleWindowsSQLServerOracle
- 檢視sqlserver連線數SQLServer
- Sqlserver修改連線密碼SQLServer密碼
- Oracle透過gateway連線sqlserver2008OracleGatewaySQLServer
- sqlserver採用link server方式遠端連線ORACLESQLServerOracle
- 使用EF 連線 資料庫 SQLserver、MySql 實現 CodeFirst資料庫ServerMySql
- 配置Oracle DBlink連線MySQL庫OracleMySql
- Oracle 透明閘道器連線MySQLOracleMySql
- SqlServer跨伺服器連線SQLServer伺服器
- ThinkPHP連線sqlserver資料庫PHPSQLServer資料庫
- java 連線 SQLServer 2005JavaSQLServer
- jmeter 連線 sqlserver 資料庫JMeterSQLServer資料庫
- SQLSERVER建立連線伺服器SQLServer伺服器
- Sqlserver上對oracle的連結伺服器連線時候卡死問題SQLServerOracle伺服器
- WINDOWS 2008 64BIT SQLSERVER 連線ORACLE問題WindowsSQLServerOracle
- Oracle使用DG4ODBC連線MySQLOracleMySql
- Android連線資料庫sqlserverAndroid資料庫SQLServer
- JDBC之連線sqlserver資料庫JDBCSQLServer資料庫
- 不能建立sqlserver資料庫連線SQLServer資料庫
- Oracle(+)連線與Join連線Oracle
- Oracle左連線,右連線Oracle
- 使用UDL測試SQLServer連線問題SQLServer
- JDBC連線SQLServer2000 (轉)JDBCSQLServer
- MYSQL語法:左連線、右連線、內連線、全外連線MySql
- GO 連線 MySQLGoMySql
- JDBC連線mysqlJDBCMySql
- MySQL字串連線MySql字串
- C連線MySQLMySql