最近在和朋友使用weka做数据挖掘,想将weka与数据库MySQL连接,在网上找了很多帖子,很多都是复制粘贴,漏洞百出。本人综合自己的配置过程将步骤重新整理,在此做一下总结:
1、安装weka和mysql(这里不细讲,请自行百度)
2、下载连接驱动程序
weka连接mysql数据库需要连接驱动程序
mysql-connector-java-5.1.45.zip,
下载地址https://dev.mysql.com/downloads/file/?id=474258
下载完后,放在weka的安装目录下
(我放在了D:\Program Files\wekahanhuaban\lib中)lib文件夹需要自己新建,
将jar包复制到lib文件夹下,
并且在JDK的安装目录中jdk1.7.0_67\jre\lib
下也放mysql-connector-java-5.1.45-bin.jar
复制代码
3、设置环境变量
此处环境变量的配置和JDK一样,首先新建
WEKA_HOME=D:\Program Files\wekahanhuaban
修改Path,在path的最前面加上
%WEKA_HOME%\lib\mysql-connector-java-5.1.45-bin.jar;
复制代码
4、修改weka.jar包
这里只是稍微修改配置文件,所以只要使用解压工具打开:weka安装目录\weka.jar\weka\experiment里找到DatabaseUtils.props将其备份为DatabaseUtils.props.bak然后将DatabaseUtils.props.mysql重命名为DatabaseUtils.props,并修改其内容:
# JDBC driver (comma-separated list)
jdbcDriver=jdbcDriver=com.mysql.jdbc.Driver
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
float, getFloat() = 7; --> numeric
date, getDate() = 8; --> date
text, getString() = 9; --> string
time, getTime() = 10; --> date
BigDecimal,getBigDecimal()=11; -->nominal
TINYINT=3
SMALLINT=4
SHORT=5
INTEGER=5
INT=5
INT_UNSIGNED=6
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=8
DATE=8
TIME=8
DATETIME=8
TIMESTAMP=8
保存。
5、修改runWeka.ini文件
打开weka安装目录中runWeka.ini文件,到文件尾部在文件尾部添加驱动器的引用(之前下载的驱动文件位置)
cp=%CLASSPATH%;D:/Program Files/wekahanhuaban/lib/mysql-connector-java-5.1.45-bin.jar
保存后运行weka
1、点击 打开数据库
2、点击设置用户名和密码
3、在URL框中输入:jdbc:mysql://localhost:3306/mysql
(localhost是服务器名称本机可以写localhost也可以写IP地址,远程连接必须写IP地址,3306是MySQL的端口号,默认是3306最后的mysql是要访问的数据库名,自行修改,确保要访问的数据库存在)
输入用户名和密码后,点击ok,
4点击如下连接按钮(1处):
如果在下面的info框中,显示connectingto: jdbc:mysql://localhost:3306/mysql = true,则连接成功;否则失败。
最后要想用weka打开数据库中的数据还需要在中间的query中写SQL语句点击查询(2处)查询出结果