不同数据库的支持

mysql

数据类型

显示样例

是否支持timestamp

statement

tracking_column

tracking_column_type

SQL示例

date

2020-10-20

N

select *, datediff(date, '1970-01-01') as days from tbl_time where datediff(date, '1970-01-01') > :sql_last_value

days

numeric

select *, datediff(date, '1970-01-01') as days from tbl_time where datediff(date, '1970-01-01') > 1603244266

datetime timestamp

2020-10-20 06:12:01

Y

select * from tbl_time where time > :sql_last_value

time

timestamp

select * from tbl_time where time > '2020-10-20 06:12:01'

时间戳

1603244266

Y

select *, FROM_UNIXTIME(shjnch, '%Y-%m-%d %h:%i:%s') as timestamp from tbl_time where FROM_UNIXTIME(shjnch, '%Y-%m-%d %h:%i:%s') > :sql_last_value

timestamp

timestamp

select *, FROM_UNIXTIME(shjnch, '%Y-%m-%d %h:%i:%s') as timestamp from tbl_time where FROM_UNIXTIME(shjnch, '%Y-%m-%d %h:%i:%s') > '2020-10-21 14:00:00'

sqlserver

数据类型

显示样例

是否支持timestamp

date

2020-10-21

N

time

14:00:00.0000000

N

datetime

2020-10-21 13:59:40.000

Y

datetime2

2020-10-21 14:00:00

Y

smalldatetime

2020-10-21 14:00:00

Y

datetimeoffset

2020-10-21 14:00:00.0000000 +08:00

Y

db2

数据类型

显示样例

是否支持timestamp

date

2020-10-21

N

time

14:00:00.0000000

N

timestamp

2020-10-21 13:59:40.000

Y

Oracle

数据类型

显示样例

是否支持timestamp

statement

date

2010-2-12

N

timestamp

12-FEB-10 01.24.52.234123211 PM

Y

select *,to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') as time d1 from dual where to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') > :sql_last_value

Postgre

数据类型

显示样例

是否支持timestamp

date

1997-01-01

N

timestamp

2020-06-17 10:01:08.03282

Y

time

12:00:00

N

sybase

数据类型

显示样例

是否支持timestamp

date

Jul 24 2014

N

timestamp

0x00000000000a8b75

N

datetime

待验证

smalldatetime

待验证

总结

通过测试,基本上可以断定,只要是时间格式为2020-10-21 14:00:00[.000]这种格式,都可以通过timestamp来实现时间增量更新。

对于不能通过这种方式的,看看有没有对应的函数进行转换成这种格式,如果没有,则只能采用datediff转换成天数(或秒数)之后通过numeric实现增量同步了。

如需要根据上述的date字段做增量同步,则可配置如下:

statement => "select *, datediff(s, '1970-01-01', date) from tbl_time where datediff(s, '1970-01-01', date) > :sql_last_value"

tracking_column => "datediff(s, '1970-01-01', date)"

tracking_column_type => "numeric"

配置示例

下面给出两个具体的配置示例:

MySQL数据库表结构如下:

mysql> desc tbl_time;

+-----------+--------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-----------+--------------+------+-----+---------+-------+

| id | int(11) | NO | PRI | NULL | |

| bigid | bigint(20) | YES | | NULL | |

| name | varchar(255) | YES | | NULL | |

| date | date | YES | | NULL | |

| time | datetime | YES | | NULL | |

| timestamp | timestamp | YES | | NULL | |

| shjnch | bigint(255) | YES | | NULL | |

+-----------+--------------+------+-----+---------+-------+

7 rows in set (0.00 sec)

表中有一条数据:

mysql> select * from tbl_time;

+----+-------+-------+------------+---------------------+---------------------+------------+

| id | bigid | name | date | time | timestamp | shjnch |

+----+-------+-------+------------+---------------------+---------------------+------------+

| 1 | 1 | time1 | 2020-10-21 | 2020-10-21 09:37:31 | 2020-10-21 09:37:34 | 1603244266 |

+----+-------+-------+------------+---------------------+---------------------+------------+

1 row in set (0.00 sec)

为了能够查询出数据,我将增量查询的sql中的>号改成

input { jdbc { jdbc_driver_class => "com.mysql.jdbc.Driver" jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/mytest?useSSL=false" jdbc_user => "root" jdbc_password => "123456" statement => "select *, FROM_UNIXTIME(shjnch, '%Y-%m-%d %h:%i:%s') as timestamp from tbl_time where FROM_UNIXTIME(shjnch, '%Y-%m-%d %h:%i:%s') < :sql_last_value"" schedule => "*/1 * * * *" connection_retry_attempts => 5 connection_retry_attempts_wait_time => 1 tracking_column => "timestamp" tracking_column_type => "timestamp" columns_charset => { "message" => "utf-8" } use_column_value => true lowercase_column_names => false record_last_run => true add_field => { "@topic" => "fc491237449424896" "@tags" => [] "@ip" => "127.0.0.1" } }

}

通过kafka可消费到数据如下:

{"@topic":"fc491237449424896","timestamp":"2020-10-21 09:37:46","@ip":"127.0.0.1","date":"2020-10-21T00:00:00.000+08:00","bigid":1,"time":"2020-10-21T09:37:31.000+08:00","@timestamp":"2020-10-21T15:36:02.526+08:00","id":1,"shjnch":1603244266,"name":"time1"}

文章来源: segmentfault.com,作者:禹鼎侯,版权归原作者所有,如需转载,请联系作者。

原文链接:segmentfault.com/a/1190000037555838

logstash mysql增量_Logstash jdbc 按时间增量更新的一些总结相关推荐

  1. logstash mysql eror_Logstash安装记录(报错com.mysql.jdbc.Driver not loaded的解决)

    Logstash是es官方标配的ELK中的"L",它们三者的关系是这样:"E"指elasticsearch,用来提供核心的搜索服务:"L"指 ...

  2. JDBC批处理插入更新MySQL Oracle

    Today we will look into JDBC Batch insert and update examples in MySQL and Oracle databases. Sometim ...

  3. mysql jdbc驱动 批量更新_jdbc-批量插入、批量删除、批量更新

    一.JDBC的批量插入 JDBC批量插入主要用于数据导入和日志记录因为日志一般都是先写在文件下的等. 我用Mysql5.1.5的JDBC driver 分别对三种比较常用的方法做了测试 方法一,使用P ...

  4. mysql jdbc驱动 批量更新_jdbc批量插入,删除,更新

    批量处理:一次向数据库发送多个SQL语句时,可以减少通信开销,从而提高性能. 不确定JDBC驱动程序是否支持此功能.应该使用DatabaseMetaData.supportsBatchUpdates( ...

  5. Kafka实现MySQL增量同步

    目标 本文是对[1]的复现和整理 环境 组件 版本 Zookeeper 3.6.0 Kafka 2.5.0 Mysql 8.0.21-0ubuntu0.20.04.4 准备工作 分别新建两个数据库A和 ...

  6. MYSQL增量备份和全量备份脚本分享

    mysql的全量备份与增量备份 全量备份:可以使用mysqldump直接备份整个库或者是备份其中某一个库或者一个库中的某个表. 增量备份:增量备份是针对于数据库的bin-log日志进行备份的,需要开始 ...

  7. mysql增量备份及恢复解决方案

    2019独角兽企业重金招聘Python工程师标准>>> 前言 操作系统崩溃.电源故障.文件系统崩溃和硬件故障等异常状况都可能导致我们正在使用的数据库出现故障而产生数据库中数据不一致的 ...

  8. mysql 增量备份_MySQL增量备份与恢复(增量备份概述、特点,断点恢复实操)

    一. MySQL 增量备份与恢复 使用 mysqldump 进行完全备份,备份的数据中有重复数据,备份时间与恢复时间过长.而增量备份就是自上一次备份之后增加或改变的内容. 1.1 增量备份的特点 增量 ...

  9. Mysql运维管理-Mysql增量备份及分库分表备份数据恢复实战12

    1. MySQL数据库的备份与恢复 1.1 Mysqldump的工作原理? 利用mysqldump命令备份的过程,实际上就是把数据从mysql库里以逻辑的sql语句的形式直接输出或者生成备份的文件的过 ...

最新文章

  1. grouplens上的movielens数据集_ItemCF算法的Python实现,数据基于MovieLens
  2. Linux抓eth0网卡包的命令,Linux系统使用tcpdump命令抓包
  3. MySQL min()函数
  4. java tomcat 监控_java程序监控tomcat实现项目宕机自动重启并发送邮件提醒
  5. 一款好看新颖的404页面源码
  6. main在c语言中的作用,main函数在C语言中是怎么定义的?有什么作用?
  7. 【论文研读】【金融】Predicting the direction of stock market prices using random forest
  8. mysql数据库 安装后 闪_MYSQL数据库Mysql数据库安装完成后需要进行的6个后续操作...
  9. 广东开放大学学习指南
  10. 数据结构 -- 景区旅游信息管理系统
  11. 3D优化之ShadowGun系列一:旗子飘扬效果实现方法及shader注解
  12. Python学习[4]:urllib库-爬虫的第三步之代理IP
  13. IT十大名言 |IT历史上被引述最多的10句名人名言
  14. 《鱿鱼游戏》播完,椪糖生意火了
  15. 月份和星期的英语(请不要再弄错了)
  16. 泰课课程-别踩白块儿
  17. 2.5寸12v5v服务器硬盘盒,3.5英寸硬盘盒装2.5英寸硬盘可以吗?外接电源还需不需要接呢...
  18. scrapy爬取伯乐在线文章
  19. oracle sql获取年月日时分秒,Oracle SQL日期及日期格式获取命令
  20. linux解压z格式文件夹,使用7zip解决解压zip格式文件名乱码, 最简单的解决解压z...

热门文章

  1. 同事反馈环:如何实现持续改进的文化
  2. nginx反向代理配置实例分享
  3. Python3.8安装 jupyter报错 NotImplementedError
  4. php获取蓝凑云文件列表,php调用蓝奏云下载接口
  5. git ssh拉取代码_win10下git初始安装及配置工作
  6. 腾讯云mysql架构_一个数据库存储架构的独白
  7. linux环境OpenRASP使用教程,集成openRASP与攻击测试
  8. java 责任链模式 链表_责任链模式的实现及源码中应用
  9. 朵朵糖故事机器人怎么更新_“故事贩卖机”专栏创始人温酒的新作,奇幻世界的暖心物语很治愈...
  10. [转载] 面试题:说说Java中接口、类、成员变量、成员方法、构造方法有哪些访问修饰符和他们的作用范围