【问题标题】:How to determine the largest length of Progress OpenEdge ABL fields如何确定 Progress OpenEdge ABL 字段的最大长度
【发布时间】:2018-09-24 22:09:04
【问题描述】:

在 OpenEdge ABL / Progress 4GL 中,可以使用 FORMAT 定义字段,但这只是其显示的默认格式。因此,具有 FORMAT 'X(10)' 的 CHARACTER 字段可以存储前十个字符之后的数千个字符。

我使用的数据库在我关心的一些表中包含数百万行。 我可以使用任何系统表或 Progress 内部程序来确定给定字段的最长长度吗?我正在寻找比全表扫描更有效的方法。我正在使用 Progress OpenEdge 11.5。

【问题讨论】:

  • 我不确定“修复”格式有什么好处,除非,正如 Tom 所说,这实际上是 SQL 宽度问题。你能详细解释一下原因吗?
  • 好呼唤@jdpjamesp。有问题的数据库没有任何程序对其进行 SQL 查询。我关心的是从这个 Progress 数据库到 Oracle 数据库的 ETL。

标签: openedge progress-4gl progress-db


【解决方案1】:

"dbtool" 将扫描数据库并查找宽度超过"sql 宽度"的字段。默认情况下,这是为字符字段定义的格式的 2 倍。

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

当然,它必须扫描表才能做到这一点,因此它可能不符合您的“比表扫描更有效”的标准。 FWIW dbtool 相当有效。

如果您担心的字段由于潜在的 SQL 访问而存在问题,您可能还需要通过 -SQLTruncateTooLarge 参数查看“授权数据截断”,该参数将即时截断数据。

另一个选项是 -SQLWidthUpdate,它会即时自动调整 SQL 宽度。这需要至少升级到 11.6。

这两种方法都可以在没有周期表扫描的情况下解决您的问题。

【讨论】:

  • 谢谢,汤姆!文档说它有各种选项,包括特定的 RECID 和表格(因为我对此感到好奇而发布此内容)。
【解决方案2】:

如果真的是你要调整的字符格式来匹配数据,我想你可以用dbtool调整所有字段的SQL宽度,然后将字符格式设置为SQL宽度的一半.

【讨论】:

  • 不是我想要的,但我赞成,因为这对其他人来说是个好主意!我不关心 Progress 数据库本身的 SQL 宽度,而是 Oracle 数据库中字段的定义。
猜你喜欢
  • 2012-03-19
  • 2014-03-19
  • 1970-01-01
  • 2020-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多