使用Spring Batch

时间:2016-12-21 12:11:32

标签: java spring spring-batch openedge progress-db

我正在使用spring批处理,我需要查询遗留系统中的数据,该系统使用进度数据库。

但是我遇到了这个异常java.sql.SQLException:[DataDirect] [OpenEdge JDBC Driver] [OpenEdge]列Ag-Obs-conf在表PUB.Agenda中的值超过了它的最大长度或精度。

我能够在select中使用SUBSTR部分解决这个问题,但我需要数据库中的所有数据。

我不能以任何方式改变数据库。

有谁能告诉我如何解决这个问题?

谢谢

1 个答案:

答案 0 :(得分:0)

OpenEdge数据库将所有数据存储为可变长度。应用程序通常在声明的“SQL Width”属性之外的“过度填充”字段,这是导致您看到错误的原因。

使用dbtool之前的OpenEdge 11.6是调整SQL宽度的标准方法。它快速,安全,有效:

http://knowledgebase.progress.com/articles/Article/P24496

从OpenEdge 11.6版开始,引入了一个新的数据库启动参数:

-SQLWidthUpdate ON

可以自动修复字符数据类型的SQL宽度。

有关此新功能的更多信息,请访问:

https://community.progress.com/community_groups/openedge_rdbms/f/18/t/19534

如果您愿意,还有11.6+中的一些选项可以自动截断返回的数据:

http://knowledgebase.progress.com/articles/Article/How-to-enable-Authorized-Data-Truncation-in-a-JDBC-or-ODBC-connection/p