Weka链接SQLServer2005数据库

来源:互联网 发布:罗伊基恩数据 编辑:程序博客网 时间:2024/04/30 23:30

最近用Weka链接SQLServer2005,遇到了一些问题,但通过查资料最终成功,现总结如下:
(1)下载Microsoft SQL Server 2005 for JDBC Driver驱动程序,并安装:

http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=c47053eb-3b64-4794-950d-81e1ec91c1ba
(2)修改CLASSPATH路径,将刚才安装的sqljdbc.jar添加到路径中。
(3)必备的Weka不用说了。这里我经安装了Weka3.5。
(4)在Weka3.5的安装完的文件夹下,有个weka.jar文件,当然可以用winrar打开,找到weka.jar/weka/experiment 目录,里面有DatabaseUtil.props文件。因为我们连接的是sqlserver2005,所以可以按照DatabaseUtil.props.oracle 的格式修改DatabaseUtil.props
(5)修改 DatabaseUtil.props,以下是修改好的内容(#表示注释)
# Database settings for Microsoft SQL Server 2005
#
# url:    
http://www.microsoft.com/
# jdbc:    http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=c47053eb-3b64-4794-950d-81e1ec91c1ba
# author: Fracpete (fracpete at waikato dot ac dot nz) huzhyi21@163.com
# version: $Revision: 1.2 $

# JDBC driver (comma-separated list) 驱动程序
jdbcDriver=com.microsoft.sqlserver.jdbc.SQLServerDriver

# database URL 连接字符串( databaseName为数据库名;user为用户名;password为密码,这几项因人而异。)
jdbcURL=jdbc:sqlserver://localhost:1433;databaseName=mydb;user=sa;password=1234

# specific data types 数据类型的转换。由于weka仅支持名词型(nominal)、数值型(numeric)、字符串、日期(date)。所以我们要将现在数据库中的数据类型对应到这四种类型上来。


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
varchar=0
float=2
tinyint=3
int=5

# other options 其它选项,展示用不到。
CREATE_DOUBLE=DOUBLE PRECISION
CREATE_STRING=VARCHAR(8000)
CREATE_INT=INT
checkUpperCaseNames=false
checkLowerCaseNames=false
checkForTable=true

(6)下面可以操作了!运行weka的Explore界面后,通过Open DB..打开SQL Viewer工作界面通过user我们设置好用户名和密码后即可connect;连接成功后,可以通过书写sql语句查询出想要的结果后,OK即可在Explore界面的preprocoss面板中看到了输入的数据。在连接读取数据库的数据时,SQL Viewer面板也提供了Info,相当与我们单纯用jdbc连接数据库时的调试信息。
当然,在这里我出现了问题,就是提示还是找不到classpath里的sqljdbc,就将sqljdbc.jar拷贝到$JAVA_HOME/jre/lib/ext/下面即可. 这是jdk的个人问题

注意:1.我们这里是直接在weka.jar中修改的,修改完可以直接运行观测效果,但是如果要是在weka的源代码中修改的话,这需要重新生成weka.jar才能生效。
    2.我们这里链接的是sqlserver2005,要是连接其他数据库时,过程也是类似的。

    3.如果还有什么问题,可以发email给我:huzhyi21@163.com

                                                                           written by huzhyi ,2009-04

原创粉丝点击