我希望能够在不借助分页的情况下将大型postgresql表加载到ElasticSearch中。
我遇到了以下问题:由于连接默认为自动提交,因此无法将大小应用于postgresql jdbc连接,如下所示:
https://github.com/logstash-plugins/logstash-input-jdbc/issues/103
看看logstash输入的jdbc插件文档,我发现在sequel_opts下有一个选项可以指定一个after_connect可调用对象。
我正在尝试测试是否实现after_connect以禁用自动提交,然后是否将允许获取大小。或者也许after_connect需要禁用自动提交,然后重新应用获取大小值。
这似乎是可行的方法,还是有人已经走了这条路而看到失败了?
我正在尝试在我的logstash配置文件中实现此内联。我一直无法提出Ruby语法来正确调用脚本。
我已经尝试了几种变体-请参阅下面的最新尝试。感谢您提供有关如何正确表示此代码的指导。
jdbc {
# Postgres jdbc connection string to our database
jdbc_connection_string => "${JDBC_URL}"
# validate connection before use
jdbc_validate_connection => true
# The user we wish to execute our statement as
jdbc_user => "${JDBC_USER}"
# The password for jdbc_user
jdbc_password => "${JDBC_PWRD}"
# The path to our downloaded jdbc driver
jdbc_driver_library => "${JDBC_JAR}"
# The name of the driver class for Postgresql
jdbc_driver_class => "${JDBC_DRIVER}"
sql_log_level => "debug"
jdbc_fetch_size => 10000
sequel_opts => {
after_connect =>
"proc { |c| c.autocommit = false } end"
}
# our query
statement => "some valid select statement"
}
谢谢。
大卫