zoukankan      html  css  js  c++  java
  • logstash input jdbc连接数据库

    示例

    以下配置能够实现从 SQL Server 数据库中查询数据,并增量式的把数据库记录导入到 ES 中。

    1. 查询的 SQL 语句在 statement_filepath => "/etc/logstash/statement_file.d/my_info.sql" 参数指定的文件中给出。

    2. 字段的转换由 add_field 参数完成。

    input {
        jdbc {
                jdbc_driver_library => "/etc/logstash/driver.d/sqljdbc_2.0/enu/sqljdbc4.jar"
                jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
                jdbc_connection_string => "jdbc:sqlserver://localhost:1433;databaseName=test_db"
                jdbc_user => "sa"
                jdbc_password => "123"
                            # schedule => 分 时 天 月 年  
                            # schedule => * 22  *  *  *     //will execute at 22:00 every day
                schedule => "* * * * *"
                clean_run => false
                use_column_value => true
                tracking_column => BUG_ID
                record_last_run => true
                last_run_metadata_path => "/etc/logstash/run_metadata.d/my_info"
                lowercase_column_names => false
                statement_filepath => "/etc/logstash/statement_file.d/my_info.sql"
                type => "my_info"
                add_field => {"[基本信息][客户名称]" => "%{客户名称}"
                              "[基本信息][BUG_ID]" => "%{BUG_ID}"
                              "[基本信息][责任部门]" => "%{责任部门}"
                              "[基本信息][发现版本]" => "%{发现版本}"
                              "[基本信息][发现日期]" => "%{发现日期}"
                              "[基本信息][关闭日期]" => "%{关闭日期}"
    }
    }

    其中,数据库查询操作 SQL 如下(my_info.sql):

    SELECT
       客户名称,
       BUG_ID,
       ISNULL(VIP_Level,'') AS VIP_Level,
       ISNULL(责任部门,'') AS 责任部门,
       ISNULL(发现版本,'') AS 发现版本,
       ISNULL(发现日期,'') AS 发现日期,
       ISNULL(关闭日期,发现日期) AS 关闭日期,
       ISNULL(
           CASE TD记录人备注
           WHEN 'NULL' THEN ''
           ELSE TD记录人备注
           END,'' ) AS TD记录人备注,
     From test_bug_db.dbo.BugInfor WHERE BUG_ID > :sql_last_value

    重要参数说明

    JDBC(Java Data Base Connectivity,Javajava数据库连接参数

    如果要了解其它数据库,可以参考我的 http://www.cnblogs.com/licongyu/p/5535833.html

    jdbc_driver_library => "/etc/logstash/driver.d/sqljdbc_2.0/enu/sqljdbc4.jar"         //jdbc sql server 驱动,各个数据库都有对应的驱动,需自己下载
    jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"                  //jdbc class 不同数据库有不同的 class 配置
    jdbc_connection_string => "jdbc:sqlserver://200.200.0.18:1433;databaseName=test_db"  //配置数据库连接 ip 和端口,以及数据库
    jdbc_user =>          //配置数据库用户名
    jdbc_password =>      //配置数据库密码

    Schedule设置

    # schedule => 分 时 天 月 年  
    # schedule => *  22  *  *  *     //will execute at 22:00 every day
    schedule => "* * * * *"

    重要参数设置

    //是否记录上次执行结果, 如果为真,将会把上次执行到的 tracking_column 字段的值记录下来,保存到 last_run_metadata_path 指定的文件中
    record_last_run => true
    
    //是否需要记录某个column 的值,如果 record_last_run 为真,可以自定义我们需要 track 的 column 名称,此时该参数就要为 true. 否则默认 track 的是 timestamp 的值.
    use_column_value => true
    
    //如果 use_column_value 为真,需配置此参数. track 的数据库 column 名,该 column 必须是递增的.比如:ID.
    tracking_column => MY_ID
    
    //指定文件,来记录上次执行到的 tracking_column 字段的值
    //比如上次数据库有 10000 条记录,查询完后该文件中就会有数字 10000 这样的记录,下次执行 SQL 查询可以从 10001 条处开始.
    //我们只需要在 SQL 语句中 WHERE MY_ID > :last_sql_value 即可. 其中 :last_sql_value 取得就是该文件中的值(10000).
    last_run_metadata_path => "/etc/logstash/run_metadata.d/my_info" //是否清除 last_run_metadata_path 的记录,如果为真那么每次都相当于从头开始查询所有的数据库记录 clean_run => false //是否将 column 名称转小写 lowercase_column_names => false //存放需要执行的 SQL 语句的文件位置 statement_filepath => "/etc/logstash/statement_file.d/my_info.sql"
  • 相关阅读:
    sql server 笔记(数据类型/新建、修改、删除数据表/)
    在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: Nam
    jquery 操作 checkbox select
    layui常见问题
    Sublime Text 3下载-汉化-插件配置
    CSS前端开发学习总结、一
    如何用 JavaScript 下载文件
    腾讯大王卡、天王卡代申请
    新人报道~cnblogs
    Node.js
  • 原文地址:https://www.cnblogs.com/licongyu/p/5383334.html
Copyright © 2011-2022 走看看