【问题标题】:Mass loading GL transactions into Exact Online将 GL 交易大量加载到 Exact Online
【发布时间】:2017-03-20 20:36:39
【问题描述】:

出于性能测试的原因,我想将许多总帐交易加载到 Exact Online。我通过在使用 OAuth 进行身份验证后发布交易来使用 REST API 进行交易及其线路。

但是,这很慢,并且涉及大量网络往返。我需要加载 180.000 条交易行。有没有其他方法可以在 Exact Online 中大量加载数据?

【问题讨论】:

    标签: exact-online invantive-sql


    【解决方案1】:

    将数据大量加载到 Exact Online 的最佳方法是使用 XML API。您可以在验证后自己使用 HTTP POST,也可以使用如下脚本。请更改要加载的交易数量和每笔交易行数的变量:

    local remark Specify the division code here:
    
    local define DIVISION_CODE "868035"
    
    local remark Originating General Ledger account:
    
    local define GL_ACT_CODE_FROM "8000"
    
    local remark Target General Ledger account:
    
    local define GL_ACT_CODE_TO "8001"
    
    local remark Journal
    
    local define JOURNAL_CODE "90"
    
    local remark Number of GL entries to generate:
    
    local define CNT_TXN_HEADERS "5"
    
    local remark Number of lines per GL entry:
    
    local define CNT_TXN_LINES "50"
    
    use ${DIVISION_CODE}
    
    create or replace table settings@inmemorystorage
    as
    select '<?xml version="1.0" encoding="utf-8"?>'
           || chr(13)
           || '<eExact xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="eExact-XML.xsd">'
           fileprefix
    ,      chr(13)
           || '</eExact>'
           filepostfix
    from   dual@datadictionary
    
    insert into UploadXMLTopics
    ( topic
    , payload
    , division_code
    , orig_system_reference
    )
    select 'GLTransactions' topic
    ,      stg.fileprefix
           || chr(13)
           || '<GLTransactions>'
           || xml
           || chr(13)
           || '</GLTransactions>'
           || stg.filepostfix
           filecontents
    ,      '${DIVISION_CODE}' division_code
    ,      'GLTransactions\SAMPLE.xml'
           filename
    from   ( select listagg
                    ( chr(13)
                      || '<GLTransaction>'
                      || chr(13)
                      || '<Journal code="'
                      || txn_journalcode
                      || '" />'
                      || chr(13)
                      || '<Date>'
                      || substr(xmlencode(trunc(sysdate)), 1, 10)
                      || '</Date>'
                      || chr(13)
                      || xmlsource
                      || chr(13)
                      || xmltarget
                      || chr(13)
                      || '</GLTransaction>'
                      , ''
                      ) xml
              from    ( select trunc(sysdate) txn_date
                        ,      '${JOURNAL_CODE}' txn_journalcode
                        ,      listagg
                               ( chr(13)
                                 || '<GLTransactionLine line="'
                                 || id
                                 || '" >'
                                 || chr(13)
                                 || '<Date>'
                                 || substr(xmlencode(trunc(sysdate)), 1, 10)
                                 || '</Date>'
                                 || chr(13)
                                 || '<GLAccount code="'
                                 || xmlencode('${GL_ACT_CODE_FROM}')
                                 || '" />'
                                 || chr(13)
                                 || '<Description>'
                                 || xmlencode('Transaction offset #' || id)
                                 || '</Description>'
                                 || '<Amount>'
                                 || '<Currency code="EUR" />'
                                 || '<Value>'
                                 || -1
                                 || '</Value>'
                                 || '</Amount>'
                                 || chr(13)
                                 || '</GLTransactionLine>'
                                 , ''
                               )
                               xmlsource
                        ,      listagg
                               ( chr(13)
                                 || '<GLTransactionLine line="'
                                 || id
                                 || '" >'
                                 || chr(13)
                                 || '<Date>'
                                 || substr(xmlencode(trunc(sysdate)), 1, 10)
                                 || '</Date>'
                                 || chr(13)
                                 || '<GLAccount code="'
                                 || xmlencode('${GL_ACT_CODE_TO}')
                                 || '" />'
                                 || '<Description>'
                                 || xmlencode('Transaction #' || id)
                                 || '</Description>'
                                 || chr(13)
                                 || '<Amount>'
                                 || '<Currency code="EUR" />'
                                 || '<Value>'
                                 || 1
                                 || '</Value>'
                                 || '</Amount>'
                                 || chr(13)
                                 || '</GLTransactionLine>'
                                 , ''
                               )
                               xmltarget
                        from   range(${CNT_TXN_LINES})@datadictionary txnlines
                        group
                        by     txn_date
                        ,      txn_journalcode
                        )
             join  range(${CNT_TXN_HEADERS})@datadictionary txnheaders
           )
    join   settings@inmemorystorage stg
    on     1=1
    where  xml is not null
    
    local remark Check outcome:
    
    select * from UploadXMLTopics
    

    XML API 的性能各不相同,但通常在办公时间会变慢。我刚刚测试过它;如图所示,上传 500 条交易行需要 15 秒(脚本中指定的 debet/credt x 5 x 50)。通过使用部门 ID,您可以跨多个部门加载以生成公司间帖子。此脚本需要 Exact Online 组合或带有 invantive sql 的 XML 驱动程序,但与手动 HTTP POST 类似。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-31
      • 1970-01-01
      相关资源
      最近更新 更多