当然,最好更改 XML 文件,但有多种选择。首先请注意,Exact Online 的性能在白天和周末会有所不同。根据经验,上传海量数据的最佳时间是周日 13:00 到 23:00。
手动上传时,您可以手动将 XML 文件拆分为多个 XML 文件。始终在路径 /eExact/TOPIC 上拆分主题。
通过UploadXmlTopics
表格上传时,可以使用两种方式:
为 Exact Online 计算的 XML 大小
计算方法是旧版本中唯一可用的方法。它的工作原理如下:
- 在内存表或基于文件的表中,为您希望上传的每个 XML 主题放置一条记录。我通常将它们命名为“xml”作为列名。
然后确定您需要多少片段,例如使用:
select ceil(log(xmlsize / 10000, 16)) + 1
from ( select sum(length(xml)) xmlsize from xmlaccounts@inmemorystorage )
将 10000 替换为最大片段大小。在重负载期间选择较小的,在周末选择 1000000。
使用例如记住结果:
local define xmlaccountsparts "${outcome:0,0}"
然后构造要插入的新 XML,UploadXmlTopics
如下所示:
select filenamepostfix, xml from (select filenamepostfix, listagg(xml, '') xml from (select substr(md5(xml), 1, ${xmlaccountsparts}) filenamepostfix, xml from xmlaccounts@inmemorystorage) group by filenamepostfix
并使用UploadXMLTopics
.
它的有效作用是首先使用以 16 为底的对数函数大致确定您需要多少个文件。然后使用 MD5 为每个要上传的 XML 主题关联一些随机分布的十六进制(16 个基数)值。取 MD5 值的左侧字符数等于对数函数的结果,以获得大约这个数量的文件,每个文件的有效负载大小大致相同。然后重构 XML。
Exact Online 的自动 XML 大小
较新的版本有一个自动片段选项,可以为您完成繁重的工作。使用如下 SQL:
insert into UploadXMLTopics@eol
--
-- Upload seed data into Exact Online.
--
( topic
, payload
, division_code
, orig_system_reference
, fragment_payload_flag
, fragment_max_size_characters
)
select topic
, filecontents
, division_code
, filename
, true
, 10000 /* This one is in characters. You can also specify in number. */
from ...
可以使用以下方式查询加载的片段:
select *
--
-- Check results and reload.
--
from UploadXMLTopicFragments@eol
看起来像: