将XML上传到Exact Online超过最大大小或响应时间

时间:2017-03-24 11:30:36

标签: exact-online invantive-sql

我有一些行业解决方案生成的XML文件,新数据可以使用XML API直接上传到Exact Online,也可以直接使用Inventtive SQL中的UploadXmlTopics表和Exact Online驱动程序。

但是,Exact Online XML API的约束限制为。每次上传10 MB,即使这样,当系统负载很重时,加载时间也可能很长。

当加载时间超过十分钟时,部分交易已经应用且部分失败。如果超时,则不会返回任何消息,说明要加载的内容。

我无法更改XML文件,因为它们是由行业解决方案自动生成的。

将XML文件可靠地上传到Exact Online的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

当然最好更改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,如下所示:

    选择filenamepostfix,xml from(select filenamepostfix,listagg(xml,'')xml          from(select substr(md5(xml),1,$ {xmlaccountsparts})filenamepostfix                   ,xml                   来自xmlaccounts @ inmemorystorage                 )           组           通过filenamepostfix         )

  • 使用UploadXMLTopics将此有效内容插入Exact Online。

它实际上做的是首先使用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

看起来像: Fragments XML uploaded to Exact Online