博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解决使用logstash中jdbc导入mysql中的数据到elasticsearch中tinyint类型被转成布尔型的问题的方法
阅读量:4290 次
发布时间:2019-05-27

本文共 442 字,大约阅读时间需要 1 分钟。

问题场景

在最近这几天用logstash将mysql中的数据导入的elasticsearch时,发现数据库中的tinyint(1)这种类型的就会被转成布尔型,这把我给气的。在网上找了一圈,才找到问题的根源。

原因探索

原来是jdbc里面将这种tinyint(1)处理成布尔型的了。tinyint(2)以上的就不会处理。

解决方案

网上有说在查询结果中将这种字段乘以1然后作为源数据使用,但是有的时候,我们是用*号全部查询出来,为了其中个别的字段去将全部字段都一一写出来,实在是心累啊。所以最后查询来查询去,找到了java中对这种的处理办法。就是在连接数据库的时候,指定这种不处理。就是在连接字符串后面指定tinyInt1isBit=false

代码如下:

jdbc_connection_string => "jdbc:mysql://localhost:3306/my_db?tinyInt1isBit=false"

这样导入之后的tinytint完整保留字段类型。解决了我的困扰。

转载地址:http://aergi.baihongyu.com/

你可能感兴趣的文章
Linux网络编程:原始套接字的魔力【上】
查看>>
进程间通信---共享内存
查看>>
进程间通信--信号(进程间通信唯一的异步方式)
查看>>
linux 标准IO缓冲机制探究
查看>>
【转】linux网络编程——套接字(socket)入门
查看>>
【原创】samba移植到android流程
查看>>
【原创】boa服务移植到安卓手机
查看>>
msgrcv error : Identifier removed(ERMID)错误解决;
查看>>
Linux进程间通信——消息队列:
查看>>
linux内核——进程管理
查看>>
(原创)socket学习实验(一)——利用C 语言socket抓取一个网页内容
查看>>
Linux 同步方法剖析--内核原子,自旋锁和互斥锁
查看>>
adb shell中设置android系统内部环境变量!
查看>>
Android ADB中使用find命令
查看>>
(原创)android6.0系统Healthd深入分析
查看>>
(原创)android6.0系统 Doze模式(DeviceIdle)实现与控制逻辑
查看>>
(原创)Android6.0亮屏流程之Keyguard Window绘制
查看>>
(原创)Android6.0亮屏流程分析
查看>>
Intent启动另一个APP里的fragment
查看>>
Android 系统7.0上 屏幕背光流程分析
查看>>