首页 文章

ABAP数据集群如何存储在数据库中?

提问于
浏览
3

可以使用 importexport 语句将数据集群存储在数据库中,以及附加到模板的字典表(至少具有字段 MANDT, RELID, SRTFD, SRTF2, CLUSTR, CLUSTD ) .

这是两个示例语句,它们使用字典表 ztest 和区域 AA 将整个内部表 ta_test 存储/检索为数据库中名为 testtab 且id为 TEST 的数据集群 .

export testtab = ta_test to database ztest(AA) id 'TEST'.
import testtab = ta_test from database ztest(AA) id 'TEST'.

查看 ztest 表的内容,我看到以下记录(前4个字段是主键):

MANDT   200
RELID   AA
SRTFD   TEST
SRTF2   0 (auto-incremented for each record)
CLUSTR  integer value with a maximum of 2.886
CLUSTD  a 128 character hexadecimal string

我还注意到,以这种方式存储的数据量远远少于内部表中的数据(例如,内部表中的1.000.000个唯一记录导致 ztest 表中只有1.703个记录) . 在 export 语句中设置 compression off 确实会增加记录数量,但它仍然少得多 .

我的问题:有谁知道这是如何工作的?实际数据是否存储在其他地方并且 ztest 是否包含指向它的指针?压缩?加密?是否可以直接从数据库访问实际数据(跳过ABAP层)?

1 回答

  • 3

    没有记录数据集群的内部格式(至少不在官方文档中) . 根据我的经验,它确实包含整个数据,而不仅仅是指针:将表条目传输到不同的系统 - 就像在传输ALV列表布局时经常这样 - 足以将内容移动到位 . 此外,二进制blob似乎不包含有关数据结构的大量信息 - 如果以不兼容的方式更改源/目标结构,则可能会丢失数据 . 不可能从数据库层直接访问(这实际上在文档的许多地方都有说明) . 有可能对编组/解组编译算法进行反向工程,但是当您获得语言语句来访问手头的内容时,为什么还要烦恼?

相关问题