使用 Spring 批处理通过 Progress 求解最大长度或精度

Solve max length or precision with Progress using Spring Batch

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

但是我有这个例外java.sql.SQLException:[DataDirect][OpenEdge JDBC Driver][OpenEdge] table PUB.Agenda 中的 Ag-Obs-conf 列有值超过其最大长度或精度。

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

而且我无法以任何方式更改数据库。

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

谢谢

OpenEdge 数据库将所有数据存储为可变长度。应用程序通常 "overstuff" 字段超出声明的 "SQL Width" 属性,这是导致您看到的错误的原因。

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

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

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

-SQL宽度更新开启

可以自动固定 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