【问题标题】:DB2 Single export file with different fixed length record formats具有不同固定长度记录格式的 DB2 单一导出文件
【发布时间】:2015-08-03 18:47:26
【问题描述】:

我需要一个从 DB2 导出的标题/详细信息文件。所有字段都是固定长度的人类可读文本。记录由标题部分和可变长度的详细信息部分组成。标题部分有 15 个字段。每个不同的详细信息部分都有自己的字段数,从 5 到 30 个不等。最多有 50 种不同类型的详细信息部分,只有一个标题部分。这些文件以标题部分开始,然后是 n 个详细信息部分。这被认为是一项记录。该文件可能有 1..1 亿条记录。

现在,数据存储在具有单个标题表和 50 个不同详细表的数据库中。

那么有没有一种简单的 SQL 方法来做这样的事情?这是记录和部分排列的可视化,而不是记录的外观(它们只是固定长度的字段文本):

HEADER REC, type = 1
DETAIL type 1
DETAIL type 1
...
HEADER REC, type = 27
DETAIL type 27
...

我想在概念上执行 SELECT * FROM HEADER,然后将其与 SELECT * FROM DEATAIL 交错。我不想将 HEADER 加入到 DETAIL 中,而 DETAIL 实际上是 50 个不同的 DETAIL 表。 HEADER.type -> DetailTableName.

【问题讨论】:

    标签: db2 export fixed-length-record


    【解决方案1】:

    DB2 的平台和版本是什么?

    SQL 并不真正支持您尝试执行的操作。事实上,你很难获得更多的反 SQL。

    你能做的最好的事情就是这样;

    select rectype, HFLD1 concat HFLD2 <...> as DTA from HDR
    UNION ALL
    SELECT rectype, DFLD1 concat DFLD2 <...> as DTA from DTL1
    UNION ALL
    <....>
    ORDER BY rectype
    

    如果您碰巧使用 DB2 for IBM i(又名 AS/400),您可以考虑使用 DDS 创建多格式逻辑文件。使用 EDTCDE 或 EDTWRD 您可以将数字字段重新定义为字符。我认为您可以简单地 FTP 生成的 LF 并以您需要的格式获取数据。

    我不得不创建这样一个文件已经很长时间了,这是非常古老的学校。那时,我只是使用 RPG 来创建一个带有单个大字符字段的 PF 文件。

    今天,我将在单独的导出中发送标题/详细信息。作为奖励,导入也会更容易。

    【讨论】:

    • 不确定版本。可能已经过时了 5 年。
    • DBX 和类型化层次结构能做到这一点吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-29
    • 2012-05-04
    • 1970-01-01
    • 2016-09-01
    • 2012-09-26
    • 2011-03-13
    相关资源
    最近更新 更多