导入/导出增强说明

来源:互联网 发布:python splite 编辑:程序博客网 时间:2024/05/20 19:19

本次升级对导入/导出有2个方面的增强:
(1)支持4种事件:允许在导出/导入前后指定指定的动作
(2)支持本地服务器导出后不经过消息队列直接导入到本地可访问的数据源


1.关于导入/导出
.导入/导出是相对数据源而言,从数据源提取数据称为导出,写入数据源称为导入.导出与原术语抽取等价.
.导入/导出由dd/lm模块共同实现
.支持4种事件处理逻辑:导入前/后,导出前/后
.导入/导出事件逻辑对应所操作的数据源:如导出事件逻辑只能在导出的数据源上执行
.事件处理逻辑支持2中表示方式:SQL命令,存储过程.
.事件处理逻辑命令支持常量参数和变量参数.
变量参数名表示主表记录对应的字段,计算时用当前记录的字段值替换.
变量参数名用'@'引导.


2.配置
2.1 dd.conf配置
<?xml version="1.0" encoding="gb2312" standalone="no" ?>
<config>
<dbc>laton</dbc> <!--供应宝本地数据库连接名-->
<src_dbc>
<default>sbdemo</default> <!--默认数据库连接名,未指定数据库连接名的规则用此连接-->
<item name="laton">31</item>
</src_dbc>
</config>

上述配置表示:规则31从本地数据库抽取,其它未指定的规则以默认的sbdemo为数据源

2.2导出命令
修改tb_5606.f005v_5606,支持导出前/后执行指定的命令和存储过程
<BeforeGet CmdType="3"><!--导出前执行的命令-->
<sp_name>usp_bp_pricebuy_change</sp_name> <!-- 存储过程名称 -->
<parameters> <!-- 存储过程参数 -->
<parameter>
<name>@bill_gyb</name> <!--参数名称 -->
<type>129</type> <!-- -->参数类型
<len>20</len>
<io_prop>3</io_prop> <!-- input/output/inputoutput-->
<value_type>2</value_type> <!-- 参数值类型 1-常量 2-变量 -->
<value></value> <!-- 参数值-->
</parameter>
</parameters>
<ret_code_para>@rtn_code</ret_code_para> <!-- 处理结果码参数名 -->
<err_text_para>@rtn_err</err_text_para> <!-- 错误文本参数名称 -->
<succeed_value>0</succeed_value> <!-- 表明成功的处理结果码-->
</BeforeGet>

<AfterGet CmdType="2" CmdAttr="1" ResultPara=""><!-- 导出后执行的命令-->
update tb_3012 set log_flag=1 where sheet_id=@sheet_id

</AfterGet>

<SingleTableHandleMode>1</SingleTableHandleMode> <!-- 单表处理方式 1-每记录 2-批处理 默认2-->


CmdType: 命令类型 1-SQL命令 2-存储过程 3-存储过程描述 默认2
CmdAttr: 命令属性 uint32 bit0-是否有返回值(仅对于CmdType=2时),默认0
ResultParaName:返回值参数名

参数值类型:

enum DataTypeEnum {
    adEmpty = 0,
    adTinyInt = 16,
    adSmallInt = 2,
    adInteger = 3,
    adBigInt = 20,
    adUnsignedTinyInt = 17,
    adUnsignedSmallInt = 18,
    adUnsignedInt = 19,
    adUnsignedBigInt = 21,
    adSingle = 4,
    adDouble = 5,
    adCurrency = 6,
    adDecimal = 14,
    adNumeric = 131,
    adBoolean = 11,
    adError = 10,
    adUserDefined = 132,
    adVariant = 12,
    adIDispatch = 9,
    adIUnknown = 13,
    adGUID = 72,
    adDate = 7,
    adDBDate = 133,
    adDBTime = 134,
    adDBTimeStamp = 135,
    adBSTR = 8,
    adChar = 129,
    adVarChar = 200,
    adLongVarChar = 201,
    adWChar = 130,
    adVarWChar = 202,
    adLongVarWChar = 203,
    adBinary = 128,
    adVarBinary = 204,
    adLongVarBinary = 205,
    adChapter = 136,
    adFileTime = 64,
    adPropVariant = 138,
    adVarNumeric = 139,
    adArray = 8192
};


2.3导入命令
修改tb_5610.f001v_5610,支持导入前/导出后执行指定的命令或存储过程
<BeforePost> <!--导入前执行的命令 -->
</BeforePost>
<AfterPost
CmdType="2" CmdAttr="1" ResultPara=""> <!--导入后执行的命令 -->
execute PROCEDURE tl_getserial(20008,@f1)
</AfterPost>


2.4
相关配置说明
单据类型(tb_0044)配置:
tb_0044.f012n_0044设置为0(抽取后不发送)
tb_0044.f013n_0044设置为0(不在本地保存)
抽取规则(tb_5601)配置
tb_5606.f022n_5606设置为4(不生成文件,直接导入)
tb_5606.f018n_5606设置为3(3-手动和自动)

2.5补充说明
可通过billinterface.exe工具配置.
2.4部分的配置手工通过数据库工具程序直接修改.



3.约束/限制:
.'@'符号只能出现在表示变量的起始位置,如不能正确处理下列语句:
update tb_3012 set log_flag=1 where sheet_id=@sheet_id and f02c_3012='@';

原创粉丝点击