3. 定制数据源文件模板(Data.csv)
为了让SQL*Loader程序准确上载外部文件中的数据,我们需要将外部文件的数据应与SQL*Loader文件中的字段一一对应。
4. 开发主机并发程序(ARIMPORT.prog)
主机并发程序使用操作系统的 Script 程序进行编写。主要目的是用来调用“数据导入程序”。“数据导入程序”的目的是将外部数据源数据(如:csv文档、txt文档)自动导入的接口表(RA_INTERFACE_LINES_ALL)中。
图4 Oracle中的主机程序
//主机程序代码 ################################################################################### # Filename : ARIMPORT.prog ################################################################################### PROGRAM_NAME=`basename $0` PROGRAM_NAME=`basename $PROGRAM_NAME .prog` START_TIME=`date +%d-%b-%Y” “%H:%M` echo $PROGRAM_NAME ” begin …. ” $START_TIME DATENOW=`date +%Y%m%d` USER_PASSWD=$1 VAR_USER_ID=$2 VAR_USER_NAME=$3 VAR_REQUEST_ID=$4 OUT_FILE=`echo $APPLCSF/$APPLOUT/o$VAR_REQUEST_ID.out` LOCAL_PATH=$AR_TOP/data CTL_FILE_NAME=`echo $LOCAL_PATH/”arcontrol.ctl”` DATA_FILE_NAME=`echo $LOCAL_PATH/”data.csv”` CTL_FILE_LOG=`echo $LOCAL_PATH”/”data”$DATENOW”.log”` #echo $CTL_FILE_NAME #echo $DATA_FILE_NAME #echo $CTL_FILE_LOG ##########sqlldr########## cd $LOCAL_PATH #$ORACLE_HOME/bin/sqlldr $USER_PASSWD control=$CTL_FILE_NAME log=$CTL_FILE_LOG $ORACLE_HOME/bin/sqlldr $USER_PASSWD control=arcontrol.ctl log=$CTL_FILE_LOG cat $CTL_FILE_LOG >> $OUT_FILE ##########update interface data########## sqlplus -s $USER_PASSWD @$AR_TOP/sql/ARIMPORT_UPD.sql { printf(“hello, worldn”); } |
5. 开发SQL*Loader程序(ARCONTROL.ctl)
开发数据导入程序的目的是,通过被主机程序调用,从而自动将外部数据(如:txt文件、CSV文件)导入至Oracle AR模块的接口表。
//SQL*Loader程序 LOAD DATA INFILE ’data.csv’ REPLACE INTO TABLE AR.RA_INTERFACE_LINES_ALL FIELDS TERMINATED BY ’,’ optionally enclosed by ’”’ ( TRX_NUMBER char(20) “trim(:TRX_NUMBER)”, TRX_DATE DATE ’YYYY-MM-DD’ , CURRENCY_CODE char(15) “trim(:CURRENCY_CODE)”, CUST_TRX_TYPE_NAME char(20) “trim(:CUST_TRX_TYPE_NAME)”, GL_DATE DATE ’YYYY-MM-DD’, ORIG_SYSTEM_BILL_CUSTOMER_REF char(240) “trim(:ORIG_SYSTEM_BILL_CUSTOMER_REF)”, TERM_NAME char(15) “trim(:TERM_NAME)”, LINE_NUMBER , DESCRIPTION char(240), QUANTITY , UNIT_SELLING_PRICE , BATCH_SOURCE_NAME char(50), SET_OF_BOOKS_ID , LINE_TYPE char(20) “trim(:LINE_TYPE)”, CONVERSION_TYPE char(30) “trim(:CONVERSION_TYPE)” ) |
6. 开发SQL脚本(ARIMPORT_UPD.sql)
为了让用户更方便地使用模板文件,我们在主机程序中,嵌入了一段SQL脚本,此段SQL的脚本目的是,通过用户输入的一些信息,自动从Oracle数据库中找到想对应的信息。比如在模块文件中,用户要输入“客户名称”,而在Oracle系统的接口表中要求填入客户的标示(orig_system_bill_customer_ref)。而对于用户来说,客户标示是透明的,故开发此段程序,以使得用户模板更加友好。
//SQL脚本 declare begin update ra_interface_lines_all iall set iall.conversion_type = substr(iall.conversion_type,1,9); commit; update ra_interface_lines_all iall set iall.orig_system_bill_customer_ref = (select a.customer_id from ar_customers_v a where a.customer_name = iall.orig_system_bill_customer_ref ), iall.orig_system_bill_address_ref = (select b.address_id from ar_customers_v a ,ar_addresses_v b where a.customer_name = iall.orig_system_bill_customer_ref and a.customer_id = b.customer_id ); update ra_interface_lines_all t set t.interface_line_context = ’外部导入’, t.interface_line_attribute1 = ’INTERFACE’, t.interface_line_attribute2 = t.trx_number, t.interface_line_attribute3 = t.line_number, t.amount = t.quantity * t.unit_selling_price, t.memo_line_name = t.description, t.conversion_date = gl_date, t.org_id = 81; update ra_interface_lines_all uila set uila.conversion_type = ’User’, uila.conversion_date = uila.gl_date, uila.conversion_rate = 1 where uila.currency_code = ’CNY’; commit; exception when others then rollback; end; / exit; |
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
作者
相关推荐
-
Oracle推出全新电子商务套件12.2.4
当今全球的业务环境复杂多变,为帮助企业应对挑战并保持竞争优势,甲骨文推出了新版Oracle电子商务套件(Oracle E-Business Suite)12.2.4。
-
甲骨文紧急通知:EBS用户暂时不要升级到Java 7
甲骨文官方近期发出紧急通知,由于Java 7还未通过Oracle E-Business Suite(EBS)认证,所以建议用户继续使用Java 6版本。
-
分享麦当劳的Oracle E-Business Suite规划经验
Henry Lyles对于安全问题充满了热情。所以一有机会,这位麦当劳的系统管理员就会来到高级主管面前,看是否他们已经把安全问题提到一定优先级。
-
港铁(深圳) 采用Oracle电子商务套件支持迅速扩展的铁路营运
港铁轨道交通(深圳)有限公司 已成功将其财务、库存、员工费用支出及采购管理系统整合到Oracle电子商务套件(Oracle E-Business Suite)。