4

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

这是两个示例语句,它们使用字典 table和 area将整个内部表存储/检索ta_test为数据库中具有 nametesttab和 id的数据集群TESTztestAA

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 条唯一记录导致表中只有 1.703 条记录ztest)。compression off对语句的设置export确实增加了记录的数量,但仍然少了很多。

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

4

1 回答 1

3

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

于 2012-12-16T16:23:02.530 回答