身安不如心安,屋宽不如心宽 。

我的logstash input jdbc 配置时间格式不一样怎么办

Logstash | 作者 ljx95315 | 发布于2018年08月04日 | 阅读数:5803

我的目的是是仅仅用logstash从oracle获取数据,导入到mysql中,我的mysql已经建立好了跟oracle一样的表中字段,但是运行logstash的时候,却发现oracle之前的日期字段数据类型是date,我的mysql相同字段数据类型是datetime,但是却报错:com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: '' for column 'ordertime' at row 1
请问一下原因,附上配置文件。。
input {
stdin {
}
jdbc {
jdbc_driver_library => "/usr/share/logstash/config/ojdbc6.jar"
jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"
jdbc_connection_string => "jdbc:oracle:thin:@//192.168.10.5:1521/orcl"
jdbc_user => "admin"
jdbc_password => "admin@123"

jdbc_paging_enabled => "true"
jdbc_page_size => "50000"
jdbc_default_timezone => "Asia/Shanghai"

statement => "SELECT birth_datetime FROM PERSON_INFO where rownum <= 10 and create_datetime >= :sql_last_value"

# schedule => "* * * * * Asia/Shanghai"
# type => ""#####LAB_SERVER_NO#####""

record_last_run => "true"
use_column_value => "true"
tracking_column_type => "timestamp"
tracking_column => "create_datetime"
last_run_metadata_path => "/usr/share/logstash/config/last_datetime/PERSON_INFO"
clean_run => "false"
lowercase_column_names => "false"
}
}

filter {
json {
source => "message"
remove_field => ["message","@version","host","@timestamp"]
}
}

output {
jdbc {
driver_jar_path => "/opt/logstash-6.3.1/config/mysql-connector-java-8.0.11.jar"
driver_class => "com.mysql.jdbc.Driver"
connection_string => "jdbc:mysql://192.168.10.61:3306/ystr2?user=ystr2&password=ystr2"
statement => ["insert into PERSON_INFO(birth_datetime) values(?)","%{birth_datetime}"]
}
}
我仅仅是从通过jdbc从oracle中获取数据,导入到mysql中去,但是报错显示,数据类型无法传进去,请教一下怎么解决
已邀请:

medcl - 今晚打老虎。

赞同来自: laoyang360 qw8613243

两边的 date 数据格式不一样,当然不能直接导,
 
1.你先用 date filter,将 input 的数据转换成 date 对象,https://www.elastic.co/guide/e ... .html
2.将时间字段转换成 mysql 数据库的格式, https://github.com/wiibaa/logs ... atter
3.然后output用新的字段插入

zqc0512 - andy zhou

赞同来自:

从ORACLE导出到MYSQL数据量大么?
这种你还有logstash.真的是有撒用撒。
原来没有logstash的时候怎么解决的呢?
不是每个场景都适合用的。

要回复问题请先登录注册