LOGSTASH-选择数组列时,连接到HSQL DB数据库的JDBC输入出现问题
我在使用Logstash的JDBC输入插件成功导入HSQL DB数据库内容时遇到困难 当我尝试获取类型为ARRAY的列时,就会出现问题 请注意,如果我尝试获取非数组列,它就可以正常工作 我从Logstash收到以下错误消息:LOGSTASH-选择数组列时,连接到HSQL DB数据库的JDBC输入出现问题,jdbc,logstash,hsqldb,logstash-jdbc,Jdbc,Logstash,Hsqldb,Logstash Jdbc,我在使用Logstash的JDBC输入插件成功导入HSQL DB数据库内容时遇到困难 当我尝试获取类型为ARRAY的列时,就会出现问题 请注意,如果我尝试获取非数组列,它就可以正常工作 我从Logstash收到以下错误消息: [WARN ][logstash.inputs.jdbc ] Exception when executing JDBC query {:exception=>#<Sequel::DatabaseError: Java::OrgLogstash::Mis
[WARN ][logstash.inputs.jdbc ] Exception when executing JDBC query {:exception=>#<Sequel::DatabaseError: Java::OrgLogstash::MissingConverterException: Missing Converter handling for full class name=org.hsqldb.jdbc.JDBCArray, simple name=JDBCArray>}
[INFO ][logstash.pipeline ] Pipeline has terminated {:pipeline_id=>"hsql", :thread=>"#<Thread:0x7b626752 run>"}
你们有没有遇到过这样的问题?你们是如何解决的?
谢谢
- 操作系统:windows 10
- 日志存储版本:6.3.1
- HSQLDB驱动程序版本:2.5.0()
- 我不知道这是否是最好的解决方案,但我设法解决了我的问题。这里是如何
我换了一行:
statement => "SELECT PLATFORM_DESTINATION_CANDIDATES FROM PUBLIC.MESSAGES_SENT"
与:
statement => SELECT concat_ws('', PLATFORM_DESTINATION_CANDIDATES , '') AS str_platforms
其结果是将stru platforms
类型为string的数据放入如下字段:ARRAY[1,2,3,4]
使用下面的ruby行,然后从字段中删除不需要的字符(ARRAY[
和]
):
ruby {
code => "event.set('listRxUnits',event.get('str_platforms').split('ARRAY[')[1].split(']')[0])"
}
您不可能将数组转换为逗号分隔的字符串字段(可能在辅助列中),使用JDBC输入插件选择它,并使用.split在ruby过滤器中处理它,谢谢您的提示。这就是我设法做到的;我在下面发布了我的解决方案。HSQLDB现在将支持CAST(arrayValue作为VARCHAR(N))将数组转换为相同的格式。然后,您可以使用SQL SUBSTR函数在源位置去除不需要的字符。
ruby {
code => "event.set('listRxUnits',event.get('str_platforms').split('ARRAY[')[1].split(']')[0])"
}