[英]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.