LOGSTASH - 选择 ARRAY 列时 JDBC 输入连接到 HSQL DB 数据库时出现问题
LOGSTASH - Issue with JDBC input connected to HSQL DB database when selecting ARRAY columns
我无法使用 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>"}
请在下面找到 Logstash conf 文件的输入部分(PLATFORM_DESTINATION_CANDIDATES
是 table 中的列名。)
input {
jdbc {
jdbc_driver_library => "hsqldb_2.5.0.jar"
jdbc_driver_class => "org.hsqldb.jdbc.JDBCDriver"
jdbc_connection_string => "jdbc:hsqldb:hsql://localhost/probe"
jdbc_user => "SA"
statement => "SELECT PLATFORM_DESTINATION_CANDIDATES FROM PUBLIC.MESSAGES_SENT"
connection_retry_attempts => 10
}
}
大家遇到过这种问题吗,怎么解决的?
谢谢。
- OS : windows 10
- Logstash 版本:6.3.1
- HSQLDB 驱动程序版本:2.5.0 (LINK)
我不知道这是否是最好的解决方案,但我设法解决了我的问题。方法如下。
我替换了行:
statement => "SELECT PLATFORM_DESTINATION_CANDIDATES FROM PUBLIC.MESSAGES_SENT"
与 :
statement => SELECT concat_ws('', PLATFORM_DESTINATION_CANDIDATES , '') AS str_platforms
将 string 类型的数据放入字段 str_platforms
的结果如下:ARRAY[1,2,3,4]
在下面的 ruby 行中,我从字段中删除不需要的字符( ARRAY[
和 ]
):
ruby {
code => "event.set('listRxUnits',event.get('str_platforms').split('ARRAY[')[1].split(']')[0])"
}
我无法使用 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>"}
请在下面找到 Logstash conf 文件的输入部分(PLATFORM_DESTINATION_CANDIDATES
是 table 中的列名。)
input {
jdbc {
jdbc_driver_library => "hsqldb_2.5.0.jar"
jdbc_driver_class => "org.hsqldb.jdbc.JDBCDriver"
jdbc_connection_string => "jdbc:hsqldb:hsql://localhost/probe"
jdbc_user => "SA"
statement => "SELECT PLATFORM_DESTINATION_CANDIDATES FROM PUBLIC.MESSAGES_SENT"
connection_retry_attempts => 10
}
}
大家遇到过这种问题吗,怎么解决的? 谢谢。
- OS : windows 10
- Logstash 版本:6.3.1
- HSQLDB 驱动程序版本:2.5.0 (LINK)
我不知道这是否是最好的解决方案,但我设法解决了我的问题。方法如下。
我替换了行:
statement => "SELECT PLATFORM_DESTINATION_CANDIDATES FROM PUBLIC.MESSAGES_SENT"
与 :
statement => SELECT concat_ws('', PLATFORM_DESTINATION_CANDIDATES , '') AS str_platforms
将 string 类型的数据放入字段 str_platforms
的结果如下:ARRAY[1,2,3,4]
在下面的 ruby 行中,我从字段中删除不需要的字符( ARRAY[
和 ]
):
ruby {
code => "event.set('listRxUnits',event.get('str_platforms').split('ARRAY[')[1].split(']')[0])"
}