DatabaseExampleSource -转换为内部表示失败
nicugeorgian
成员职位:31大师
你好,
当使用DatabaseExampleSource与Oracle数据库系统,我得到以下警告几次:
无法读取数据库数据:转换为内部表示失败[类java.sql.SQLException]
你知道这到底是什么意思吗?
很多谢谢!
地理
当使用DatabaseExampleSource与Oracle数据库系统,我得到以下警告几次:
无法读取数据库数据:转换为内部表示失败[类java.sql.SQLException]
你知道这到底是什么意思吗?
很多谢谢!
地理
标记:
0
答案
如果列的值为string,则在尝试将该值转换为Int和Double类型时发出上述警告。
我仍然不清楚为什么这些尝试转换为String, Int和Double类型…什么好主意吗?
地理
可能是您将属性的值类型定义为数值,但数据列实际上包含字符串?
欢呼,
Ingo
谢谢你的回答。我不太明白你在说什么。
当我运行包含DatabaseExampleSource操作符的Java程序时,我在控制台上得到了这个警告。
我认为它与DatabaseExampleSource操作符的“数据管理”参数有关。该参数决定数据如何在内部表示。我认为该参数的默认值是“double_array”。
我有数字属性和名义(分类)属性。我不清楚如何使用DatabaseExampleSource操作符(以及我随后使用的Weka学习器)指定属性的类型。
任何想法?
很多谢谢!
欢呼,
地理
好吧,我挖得更深了一点。首先,它与“datammanagement”参数无关。这只是定义了当数据加载到内存中时,RapidMiner如何在内部表示数据。但这不会导致这里的问题,因为错误是Oracle特定的错误,错误代码为17059。我搜索了短语“无法转换为内部表示[类java.sql]”。在谷歌中找到了这个链接:
http://www.dbmotive.com/oracle_error_codes.php?errcode=17059
似乎您的Oracle数据库包含至少一列的Oracle数据类型是JDBC驱动程序不知道的/ Java定义的类型。我们目前支持这些类型 返回值显示将把数据库的列类型转换为哪个RapidMiner属性。
您能显示select语句和表的模式吗?也许我们可以找出是哪种类型导致了这里的问题,也许这可以通过简单地将其添加到上面所示的类型定义中来解决。
谢谢,
Ingo
谢谢你的回答。
查询很简单:SELECT * FROM RM_INPUTDATA
下面是表RM_INPUTDATA的(某种程度上简化的)设计:
属性1:数字(双)
Attribute2: Text (size 3)
属性3:Text (size 2)
属性4:Text (size 12)
Attribute5: Text (size 5)
属性7:Text (size 8)
这是典型的消息,我得到(在控制台)为每一个表记录:
attribute1 -->字符串:'3243',Int: '3243',双精度:'3243.0',缺失:'false'
……
attribute4 --> String: 'GREC '无法读取数据库数据:转换为内部表示失败[class java.sql.]无法读取数据库数据:转换为内部表示失败[类java.sql. sql]。SQLException],缺失:'false'
……
这里,attribute4被定义为Text类型(大小为12),但其值的长度为4。这有问题吗?: - \
欢呼,
地理
我没有注意到您使用了RM 4.1beta(取自另一个主题)。在这个测试版中有一个调试消息,它在最终版本4.1中被删除,它试图将每个字段转换为字符串、双精度、整数,而不依赖于实际的列类型。这条线 是由什么东西产生的 错误消息只是告诉您无法从文本中获取数字。所以这里没有什么问题:它只是测试版中的调试输出,现在已经消失了。只要更新到最新版本,你就不会再收到这些消息了。
欢呼,
Ingo
非常感谢,英戈!