성능 테스트를 위해 많은 일반 원장 트랜잭션을 정확한 온라인으로로드하려고합니다. OAuth를 사용하여 인증 한 후 트랜잭션을 게시하여 Transaction 및 REST API에 REST API를 사용하고 있습니다.GL 트랜잭션을 정확한 온라인으로로드
그러나 이것은 매우 느리고 네트워크 왕복 횟수가 많습니다. 180.000 개의 거래 행을로드해야합니다. 정확한 온라인에서 대량로드 데이터를 대체 할 수있는 방법이 있습니까?
성능 테스트를 위해 많은 일반 원장 트랜잭션을 정확한 온라인으로로드하려고합니다. OAuth를 사용하여 인증 한 후 트랜잭션을 게시하여 Transaction 및 REST API에 REST API를 사용하고 있습니다.GL 트랜잭션을 정확한 온라인으로로드
그러나 이것은 매우 느리고 네트워크 왕복 횟수가 많습니다. 180.000 개의 거래 행을로드해야합니다. 정확한 온라인에서 대량로드 데이터를 대체 할 수있는 방법이 있습니까?
데이터를 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 [email protected]
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 [email protected]
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 [email protected] 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로 재생하면 여러 부서간에로드하여 회사 간 게시물을 생성 할 수 있습니다. 이 스크립트는 Invantive SQL과 함께 Exact Online 결합 또는 XML 드라이버가 필요하지만 수동 HTTP POSTS의 경우 유사합니다.