oracle - 具有多个表和 where 条件的 Logstash jdbc 语句
问题描述
logstash 是否可以从变量/数组执行循环以执行不同表的 jdbc 语句?
我想从多个表中执行这个示例 oracle 查询。
Example:
strApp = App_A, App_B, App_C, App_D....App_Z
SQL Query: SELECT Count(1) As Count FROM DB." & strApp &"
目前我为每个表使用 1 个 jdbc 输入,这导致查询代码很长
input {
jdbc {
jdbc_driver_library => "/usr/share/logstash/custom/ojdbc8.jar"
jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"
jdbc_connection_string => "jdbc:oracle:thin:@<url>:<port>:<db>"
jdbc_user => "xxx"
jdbc_password => "xxx"
statement => "SELECT Count(1) As Count FROM DB.App_A"
type => "App_A"
codec => "json_lines"
add_field => { "secret" => "123123" }
schedule => "*/1 * * * *"
}
jdbc {
jdbc_driver_library => "/usr/share/logstash/custom/ojdbc8.jar"
jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"
jdbc_connection_string => "jdbc:oracle:thin:@<url>:<port>:<db>"
jdbc_user => "xxx"
jdbc_password => "xxx"
statement => "SELECT Count(1) As Count FROM DB.App_B"
type => "App_B"
codec => "json_lines"
add_field => { "secret" => "123123" }
schedule => "*/1 * * * *"
}
#App_C--> App_Z onwards.....................
}
filter {
}
# Output section
output {
if [secret] =="123123" {
stdout {codec => json_lines}
tcp {
host => "<url>"
port => "<port>"
codec => "json_lines"
}
}
}
有没有办法“简化”代码?由于需要查询的表范围很大。多个WHERE语句如何,也使用相同的概念?
解决方案
推荐阅读
- laravel - AWS SQS FIFO 队列
- ios - Xcode 通过 Ad Hoc 分发具有正确证书/配置文件的应用程序
- npm - NPM install 删除/修改 package.json 中的空键(例如,依赖项)
- r - 如何更改 csv 文件中内容的类别?
- java - 运行颤振医生 --android-licenses 时出现错误。错误:找不到或加载主类 Rout\AppData\Local\Android\Sdk\cmdline-tools\l
- java - 根据内容(行数)重置 JTable
- excel - .Net Core Regex Replace 返回的结果与 localhost 不同
- python - 满足条件时重新格式化数据框/添加行
- firebase - 量角器不喜欢angularfire
- r - 在 R 中,如何指定一组变量以在不同模型中重用?