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