1.前言:
在我的上篇博客里我在连接weka和MySQL方面给了大家一些解决的方案,但是在使用时还是存在一些问题,就是我题目描述的weka不能识别mysql的数据类型的问题,原因我就简单的阐述一下:MySQL之所以对有些字段类型不能解释为weka属性类型是因为他们两个支持的Java类型不一样,举个栗子:jdbc驱动会把MySQL的TEXT字段类型映射为weka属性中的BLOB类型,这就需要我们在配置文件中将这种映射关系重新修改,下面就进行我们的教学环节,非常简单容易操作
- 道需要继续修改weka.jar里的weka/experiment/DatabaseUtils.props,在里面添加该类型,首先要注意的是如果是类型里有空格请转义或者用下划线代替,如下图的操作
或者你直接复制我的放在对应的位置上,代码如下
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
timestamp, getTime() = 11; --> date
BigDecimal,getBigDecimal()=11; -->nominal
接着修改下面的文件内容,建议直接复制我的粘贴进去,自己敲的话容易出错:
char=0
varchar=0
longvarchar=0
binary=0
varbinary=0
longvarbinary=0
bit=1
numeric=2
decimal=2
tinyint=3
smallint=4
integer=5
bigint=6
real=7
float=2
double=2
date=8
time=10
timestamp=11
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
SMALLINT_UNSIGNED=4
TINYINT_UNSIGNED=3
YEAR=5
ok了,只需要在上面的位置添加对应的映射类型即可,再次运行sql语句你的MySQL内容就能被weka识别了