繁体   English   中英

jdbc logstash 将表名更改为今天

[英]jdbc logstash Change table name to today

我希望表名是今天的日期。

例如:dbtest_2022.dbo.tbshop2_2022_08_22 自动更改为 dbtest_2022.dbo.tbshop2_2022_08_23

input {
  jdbc {
        jdbc_driver_library => "/usr/share/logstash/logstash-core/lib/jars/sqljdbc42.jar"
        jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
        jdbc_connection_string => "..."
        jdbc_user => "..."
        jdbc_password => "..."
        statement => "SELECT ... FROM dbtest_2022.dbo.tbshop2_2022_08_22"
        schedule => "*/14 * * * *"
        add_field => { "tag" => "mssql-test" }
        type => "mssql"
    }
}

我有一个想法提出两个请求。 在第一个请求中,获取表 id,在第二个请求中,使用此 id 发出请求。

statement => "SELECT OBJECT_ID(N'dbtest_2022.dbo.tbshop2_{year}_{month}_{day}') AS 'object_id' AND SELECT ... FROM table(object_id)"

或者 jdbc 中是否有任何表达式来实现这个? 例如:dbtest_2022.dbo.tbshop2_now() 或者我可以在 jdbc 中使用 dbtest_2022.dbo.tbshop2_{year} {month} {day} 吗?

好吧,这样你每天都不会用手改变请求,而是以某种方式自动化它

我不太擅长SQL。 我很乐意就如何实现这一点提供帮助或想法。

我通过以下步骤解决了。

1. [.profile] 设置环境变量。

...
CURRENT_YYYYMM=`date "+%Y%m`
export CURRENT_YYYYMM
...

2.logstash配置文件

input { 
    jdbc {
        ...
        FROM ${CURRENT_YYYYMM}_logs
        ...
}

参考: https://www.elastic.co/guide/en/logstash/current/environment-variables.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM