将 XML 上传到 Exact Online 超过最大大小或响应时间
Upload XML into Exact Online exceeding maximum size or response time
我有几个 XML 文件由行业解决方案生成,其中包含要使用 XML API 直接或使用 [=11= 上传到 Exact Online 的新数据] table Invantive SQL 与 Exact Online 驱动程序。
但是,Exact Online XML API 设置了大约的限制。每次上传 10 MB,即使如此,当系统负载很重时,加载时间也会很长。
当加载时间超过十分钟时,部分事务已应用,部分失败。如果超时,则不会返回任何消息来说明还有哪些内容需要加载。
我无法更改 XML 文件,因为它们是由行业解决方案自动生成的。
将 XML 文件可靠地上传到 Exact Online 的最佳方法是什么?
当然最好更改 XML 文件,但有多种选择。首先请注意,Exact Online 的性能在白天和周末各不相同。根据经验,上传大量数据的最佳时间是周日 13:00 到 23:00。
手动上传时,可以手动将XML个文件拆分成多个XML个文件。始终在路径 /eExact/TOPIC.
上拆分主题
通过UploadXmlTopics
table上传时,可以使用两种方式:
- 已计算
- 自动化
为 Exact Online 计算 XML 尺寸
计算方法是旧版本中唯一可用的方法。它的工作原理如下:
- 在内存 table 或基于文件 table 中,为您希望上传的每个 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 文件名后缀,xml
from ( select filenamepostfix, listagg(xml, '') xml
来自 ( select substr(md5(xml), 1, ${xmlaccountsparts}) 文件名后缀
, xml
来自 xmlaccounts@inmemorystorage
)
团体
按文件名后缀
)
并使用 UploadXMLTopics
.
将此有效负载插入 Exact Online
它有效地做的是首先使用以 16 为底数的对数函数来确定大约需要多少文件。然后使用 MD5 为每个要上传的 XML 主题关联一些随机分布的十六进制(16 位)值。取 MD5 值的左侧字符数等于对数函数结果,以获得大约这个数量的文件,每个文件具有大约相同的负载大小。然后重建 XML.
自动 XML Exact Online 尺寸
较新的版本有一个自动片段选项,可以为您完成繁重的工作。使用 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
看起来像:
我有几个 XML 文件由行业解决方案生成,其中包含要使用 XML API 直接或使用 [=11= 上传到 Exact Online 的新数据] table Invantive SQL 与 Exact Online 驱动程序。
但是,Exact Online XML API 设置了大约的限制。每次上传 10 MB,即使如此,当系统负载很重时,加载时间也会很长。
当加载时间超过十分钟时,部分事务已应用,部分失败。如果超时,则不会返回任何消息来说明还有哪些内容需要加载。
我无法更改 XML 文件,因为它们是由行业解决方案自动生成的。
将 XML 文件可靠地上传到 Exact Online 的最佳方法是什么?
当然最好更改 XML 文件,但有多种选择。首先请注意,Exact Online 的性能在白天和周末各不相同。根据经验,上传大量数据的最佳时间是周日 13:00 到 23:00。
手动上传时,可以手动将XML个文件拆分成多个XML个文件。始终在路径 /eExact/TOPIC.
上拆分主题通过UploadXmlTopics
table上传时,可以使用两种方式:
- 已计算
- 自动化
为 Exact Online 计算 XML 尺寸
计算方法是旧版本中唯一可用的方法。它的工作原理如下:
- 在内存 table 或基于文件 table 中,为您希望上传的每个 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 文件名后缀,xml from ( select filenamepostfix, listagg(xml, '') xml 来自 ( select substr(md5(xml), 1, ${xmlaccountsparts}) 文件名后缀 , xml 来自 xmlaccounts@inmemorystorage ) 团体 按文件名后缀 )
并使用
UploadXMLTopics
. 将此有效负载插入 Exact Online
它有效地做的是首先使用以 16 为底数的对数函数来确定大约需要多少文件。然后使用 MD5 为每个要上传的 XML 主题关联一些随机分布的十六进制(16 位)值。取 MD5 值的左侧字符数等于对数函数结果,以获得大约这个数量的文件,每个文件具有大约相同的负载大小。然后重建 XML.
自动 XML Exact Online 尺寸
较新的版本有一个自动片段选项,可以为您完成繁重的工作。使用 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
看起来像: