LOGSTASH-选择数组列时,连接到HSQL DB数据库的JDBC输入出现问题

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

我在使用Logstash的JDBC输入插件成功导入HSQL DB数据库内容时遇到困难

当我尝试获取类型为ARRAY的列时,就会出现问题

请注意,如果我尝试获取非数组列,它就可以正常工作

我从Logstash收到以下错误消息:

[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])"
        }