- 浏览: 33316 次
- 性别:
- 来自: 上海
最新评论
-
zhongxuchen:
感谢大家的评价,sqltoy在大家刚接触的时候多少会存在一些心 ...
讲述最值得你了解的sqltoy-orm最佳查询实践 -
chenbaixing8:
从事5年多得开发了,自从项目用了sqltoy后感觉效率快得不行 ...
讲述最值得你了解的sqltoy-orm最佳查询实践 -
hong_zhiliang:
使用sqlToy已经有一段时间了,真正解决实际项目中碰到的一些 ...
讲述最值得你了解的sqltoy-orm最佳查询实践 -
luckywang168:
接触这个orm框架有段时间了,新人上手很快,省去了mybati ...
讲述最值得你了解的sqltoy-orm最佳查询实践 -
chenbingbing:
目前公司的报表系统就是采用的楼主的sqlToy,不得不说楼主的 ...
讲述最值得你了解的sqltoy-orm最佳查询实践
excel-tools是用来将excel文件导入到数据库、将数据库文件导出成excel以及数据库表数据库互导的强大工具
目前excel-tools改名为excelToy,excelToy刚刚经历建行项目数据移植的考验,成功将旧系统的数据库中(sqlserver2000)的数据移植到oracle10g中,因为系统是彻底重构,数据库表彻底重新设计,而原系统数据需要移植过来,excelToy正好派上用场。
简单介绍一下excelToy的诞生背景:
excelToy设计的目的用于项目试运行前的数据准备阶段,它是sagacity(睿智)j2ee开发平台中的一个组成部分。
一般情况下一个系统上线前需要做初始化一些系统数据,如数据字典、机构、人员、权限,以及一些历史的资料档案(如考试系统,需要初始化试卷库)等等,一般数据准备我们会以excel文件为介质,所以需要将excel数据导入到数据库中。
在此解答几个问题:
1、为什么不用界面维护呢?少量数据维护还好,大量数据维护客户一定会跟你急,另外项目可能只是测试阶段这些准备数据会经常被重新导入,让别人维护一次人家还好说,再维护一次肯定骂死你。
2、为什么不维护一次后从数据库中导出来,以后再重新导呗!
答:很多时候初始化的数据会不停的改变,如人员信息,过两天客户给你一个新的excel文件,客户只会给你提供excel,他不可能帮你改导出的sql文件的
3、写一个程序挨个读excel导呗
答:那可能得写一大堆代码,不通用,下一个项目又得改代码。
总之以上等等等的因素导致了excelToy的诞生。
excelToy包含以下几个功能:
1、将数据库的表按关联关系输出到xml文件中,此功能的目的在于为其他任务提供数据导入的顺序
2、数据导出,可以将sql语句查询结果以及表清单(当然最终也是sql,即select * from table)的数据全部导出存放于指定目录的excel文件中
3、数据导入,将excel文件数据通过eql语句写入到数据库中
4、数据库修改,以excel数据替换到sql语句中,并执行sql完成对数据库的修改
另外excelToy的最大特点是引入转换器概念,比方将excel中的男女转换成F、M,我们将引入一个枚举转换器
<convert id="SexEnum" extend="enum">
<param name="enumKeys">女</param>
<param name="enumValues">F</param>
<param name="other">M</param>
</convert>
我们导入任务中的EQL语句定义,粗体部分:
(
${UserID},${EmployeeCode},${UserName},${level},${LoginName},
${priceType},@SexEnum(${Gender}),
${Description},${Email},
${PhoneNumber}, ${AttachDepartmentID},${useDeptId},@MobileSubStr(${celltelephone}),
${utmost},${person_code},
${ModifyPerson}, ${ModifyDate} , ${startdate},
${enddate},@deptEnum(${delFlag}),${pmslogin})
into SYS_USER_INFO (
USER_ID, USER_CODE,NAME,LEVEL_ID,ENGLISH_NAME,
PRICE_TYPE, SEX,
COMMENTS, EMAIL,
TELEPHONE,DEPT_ID,WORK_DEPT_ID, MOBILE_NO,
MAX_DAY_WORK_HOURS, IDENTITY_ID,
UPDATE_BY, UPDATE_DATE,INDUTY_DATE,
OUTDUTY_DATE , ENABLED, PMS_ID)
基本配置效果如下:
<?xml version="1.0" encoding="UTF-8"?>
<sagacity>
<!-- 配置数据源 -->
<include file="config/excel-database.xml"/>
<!-- 设置execl最大导出行数 -->
<property name="export.sheet.maxcount" value="4000"/>
<property name="resPool" value="21"/>
<property name="task.auto.disabled" value="false"/>
<convert id="organNoSeq" extend="sequence"/>
<convert id="organLineSeq" extend="sequence"/>
<convert id="SexEnum" extend="enum">
<param name="enumKeys">0</param>
<param name="enumValues">F</param>
<param name="other">M</param>
</convert>
<convert id="DictDataTypeEnum" extend="enum">
<param name="enumKeys">字符串,数字,日期</param>
<param name="enumValues">0,1,2</param>
<param name="other">0</param>
</convert>
<convert id="sagResourceeEnum" extend="enum">
<param name="enumKeys">模块,功能菜单</param>
<param name="enumValues">1,2</param>
<param name="other">1</param>
</convert>
<convert id="deptEnum" extend="enum">
<param name="enumKeys">0,1</param>
<param name="enumValues">1,0</param>
<param name="other">1</param>
</convert>
<convert id="MobileSubStr" extend="substr">
<param name="beginIndex">0</param>
<param name="endIndex">18</param>
</convert>
<convert id="StatusSubStr" extend="substr">
<param name="beginIndex">0</param>
<param name="endIndex">1</param>
</convert>
<convert id="NullConvert" extend="enum">
<param name="enumKeys">null</param>
<param name="enumValues"/>
</convert>
<convert id="DeptTreeRoute" extend="treeRoute">
<param name="rootId" value="-1"/>
<param name="nodeRouteField" value="NODE_ROUTE"/>
<param name="nodeLevelField" value="NODE_LEVEL"/>
<param name="nodeRouteHasSelfField" value="NODE_ROUTE_SELF"/>
<param name="isChar" value="false"/>
<param name="size" value="8"/>
</convert>
<convert id="sagResouceTreeRoute" extend="treeRoute">
<param name="rootId" value="-1"/>
<param name="nodeRouteField" value="TREE_ROUTE"/>
<param name="nodeLevelField" value="NODE_LEVEL"/>
<param name="isChar" value="false"/>
<param name="size" value="8"/>
</convert>
<convert id="capabilityTreeRoute" extend="treeRoute">
<param name="rootId" value="-1"/>
<param name="nodeRouteField" value="NODE_ROUTE"/>
<param name="nodeLevelField" value="NODE_LEVEL"/>
<param name="nodeRouteHasSelfField" value="NODE_ROUTE_SELF"/>
<param name="isChar" value="false"/>
<param name="size" value="8"/>
<param name="leafField" value="IS_LEAF"/>
</convert>
<convert id="dateFormat" extend="dateFormat">
<param name="format" value="yyyy-MM-dd"/>
<param name="dataType" value="String"/>
</convert>
<convert id="sysdateFormat" extend="dateFormat">
<param name="format" value=" yyyy-mm-dd hh:mm:ss.fffffffff"/>
<param name="dataType" value="String"/>
</convert>
<convert id="CalendarFlagEnum" extend="enum">
<param name="enumKeys">1,2</param>
<param name="enumValues">0,1</param>
<param name="other">0</param>
</convert>
<convert id="myTrim" extend="trim">
</convert>
<convert id="systreeMap" extend="treeMap">
<param name="idIndex" value="1"/>
<param name="dynId" value="true"/>
<param name="idNameIndex" value="2"/>
</convert>
<convert id="systreePoolMap" extend="treeMap">
<param name="idIndex" value="1"/>
<param name="dynId" value="true"/>
<param name="idNameIndex" value="3"/>
</convert>
<convert id="sagResouceMap" extend="treeMap">
<param name="idIndex" value="1"/>
<param name="dynId" value="true"/>
<param name="idNameIndex" value="4"/>
</convert>
<convert id="myTableSequence" extend="tableSequence">
</convert>
<convert id="mydict" extend="dict">
<param name="sql">
<![CDATA[select CAPABILITY_ID from SYS_CAPABILITY where name='#{keyParam}']]>
</param>
</convert>
<convert id="myCapdict" extend="dict">
<param name="sql">
<![CDATA[select DICT_KEY from sag_dict_detail where dict_type_code='CAPABILITY_LEVEL' and DICT_NAME='#{keyParam}']]>
</param>
</convert>
<convert id="myPoolId" extend="dict">
<param name="sql">
<![CDATA[select t1.pool_id from sys_res_pool t1 where t1.pool_name='#{keyParam}']]>
</param>
</convert>
<convert id="workCal" extend="dict">
<param name="sql">
<![CDATA[select DICT_KEY from sag_dict_detail where dict_type_code='SYS_WORKCALENDAR_NAME_TYPE' and DICT_NAME='#{keyParam}']]>
</param>
</convert>
<outputTables id="task0" datasource="pias" file="pias.xml" active="false"/>
<export id="exportXMLTables" datasource="old_pmccenter" blobSave="false" active="false" maxLimit="200000" mapping-tables="PMCCENTER_TABLE.xml" dist="deployData/system">select * from taskassignment b where b.taskid in (select a.taskid from tasksheet a)</export>
<!-- ########################## 资源信息表的导出(加入了使用部门ID) ###################-->
<export id="exportSagUser" datasource="old_pmccenter" blobSave="false" active="true" maxLimit="200000" dist="deployData/system/资源信息.xls"> <![CDATA[
select t.* ,
(select DepartmentID from UserWorkDepartment d where d.UserID=t.UserID)as useDeptId from UserInfo t
]]> </export>
<!-- ########################## 资源级别的导出 ###################-->
<export id="exportUserLevel" datasource="old_pmccenter" blobSave="false" active="true" maxLimit="200000" dist="deployData/system/资源级别报价.xls"> <![CDATA[
select * from sys_person_level
]]> </export>
<!-- ########################## 部门信息的导出 ###################-->
<export id="exportDept" datasource="old_pmccenter" blobSave="false" active="true" maxLimit="200000" dist="deployData/system/部门信息.xls"> <![CDATA[
select * from Department
]]> </export>
<!-- ########################## 部门负责人的导出 ###################-->
<export id="exportDeptMaster" datasource="old_pmccenter" blobSave="false" active="true" maxLimit="200000" dist="deployData/system/部门负责人.xls"> <![CDATA[
select * from DepartmentAccess
]]> </export>
<!-- ###################行政日历表数据信息表的导入#####################################-->
<import id="sys_workcallendar" datasource="pias" clear="true" active="true" startRow="2" titleRow="1" fkFilter="true" dist="deployData/system" files="行政日历.xls$">
<do>
<mainTable><![CDATA[(
${日历编号},@workCal(keyParam:${日历名称}),${开始时间},${结束时间},@CalendarFlagEnum(${工作日标识})
) into SYS_WORK_CALENDAR(
CAL_ID,CAL_NAME,BEGIN_DATE,END_DATE,IS_HOLIDAY
)]]> </mainTable>
</do>
<!--sequence维护到序列表 -->
<end-do>
@myTableSequence({keyName:SYS_WORK_CALENDAR})
</end-do>
</import>
<!-- #####################################职能信息表的导入#####################################-->
<import id="sys_capability" datasource="pias" clear="true" active="true" startRow="2" titleRow="1" fkFilter="true" dist="deployData/system" files="职能信息.xls$">
<pre-do>delete from SYS_RES_POOL_USER </pre-do>
<pre-do>delete from SYS_CAPABILITY_LEVEL </pre-do>
<pre-do>delete from SYS_RES_POOL_CAPABILITY </pre-do>
<pre-do>delete from SYS_DEPARTMENT_MASTER </pre-do>
<pre-do>delete from SYS_RES_POOL_MASTER </pre-do>
<pre-do>delete from SYS_RES_POOL </pre-do>
<do>
<mainTable><![CDATA[(
@organNoSeq(capabilityID),@myTrim(${职能名称}),@systreeMap(${上级职能名称}),${显示顺序},
"",0,1,${描述},${启用标志}
) into SYS_CAPABILITY(
CAPABILITY_ID,NAME,PARENT_CAPABILITY_ID,SHOW_ORDER,
NODE_ROUTE,NODE_LEVEL,IS_LEAF,COMMENTS,ENABLED
)]]> </mainTable>
<!-- 添加子表 -->
<subTables>
<subTable loop-column="对应职级" split="," as="职级">
<![CDATA[
(@myCapdict(keyParam:#{职级}),#{CAPABILITY_ID},1,100,100) into SYS_CAPABILITY_LEVEL
(CAPABILITY_LEVEL_ID,CAPABILITY_ID,ENABLED,CAPABILITY_WORK_RATE,CAPABILITY_LEVEL_NAME)
]]>
</subTable>
</subTables>
</do>
<!-- 计算节点路径和节点级别-->
<end-do>@capabilityTreeRoute({tableName:SYS_CAPABILITY,idField:CAPABILITY_ID,pidField:PARENT_CAPABILITY_ID})</end-do>
<!--更新级别名称 -->
<end-do>
update sys_capability_level t set t.capability_level_name=
(select dict_name from sag_dict_detail d where d.dict_type_code='CAPABILITY_LEVEL' and d.dict_key=t.capability_level_id )
</end-do>
<!--插入没有职级的职能,设置它的值为其他
<end-do>
insert into sys_capability_level(capability_id,capability_level_id,capability_level_name,capability_work_rate,enabled)
select d.capability_id,0,'其他',100,1 from sys_capability d where d.capability_id not in
(select distinct t.capability_id from sys_capability_level t) and d.is_leaf=1
</end-do>
-->
<!--sequence维护到序列表 -->
<end-do>
@myTableSequence({keyName:SYS_CAPABILITY})
</end-do>
</import>
<!-- #####################################资源池信息表的导入#####################################-->
<import id="sys_resourcePool" datasource="pias" clear="true" active="true" startRow="2" titleRow="1" fkFilter="true" dist="deployData/system" files="资源池信息.xls$">
<pre-do>delete from SYS_RES_POOL_USER </pre-do>
<pre-do>delete from SYS_RES_POOL_CAPABILITY </pre-do>
<do>
<mainTable><![CDATA[(
@organNoSeq(resourcePoolID),@organNoSeq(poolCode),@myTrim(${资源池名称}),@systreePoolMap(${上级资源池}),"",
0,1,1,${描述},${创建人},@dateFormat(${创建日期}),${启用标志}
) into SYS_RES_POOL(
POOL_ID,POOL_CODE,POOL_NAME,PARENT_POOL_ID,NODE_ROUTE,
NODE_LEVEL,IS_LEAF,NODE_ROUTE_SELF,COMMENTS,UPDATE_BY,UPDATE_DATE,ENABLED
)]]> </mainTable>
<!-- 添加子表 -->
<subTables>
<subTable loop-column="对应职能" split="," as="职能">
<![CDATA[
(@mydict(keyParam:@myTrim(#{职能})),#{POOL_ID},1) into SYS_RES_POOL_CAPABILITY
(CAPABILITY_ID,POOL_ID,ENABLE)
]]>
</subTable>
</subTables>
</do>
<!-- 计算节点路径和节点级别-->
<end-do>@capabilityTreeRoute({tableName:SYS_RES_POOL,idField:POOL_ID,pidField:PARENT_POOL_ID})</end-do>
<!--sequence维护到序列表 -->
<end-do>
@myTableSequence({keyName:SYS_RES_POOL})
</end-do>
</import>
<!-- ########################### 部门信息表的导入#################################################### -->
<import id="sys_department" datasource="pias" clear="true" active="true" startRow="2" titleRow="1" dist="deployData/system" files="部门信息.xls$">
<pre-do>delete from SYS_USER_INFO</pre-do>
<pre-do>delete from SYS_USER_LEVEL_PRICE</pre-do>
<pre-do>delete from SYS_DEPARTMENT_MASTER</pre-do>
<do>
<mainTable> <![CDATA[(${DepartmentID},${DepartmentCode},${SuperiorDepartmentID},
${DepartmentName},${simTitle},${type},${SequenceKey},${org_code},${Description},
${ModifyPerson},${ModifyDate},${contractcall},${contractfax},
${contractmail},@deptEnum(${delFlag}),"",0)
into SYS_DEPARTMENT_INFO (DEPT_ID,DEPT_CODE,PARENT_DEPT_ID,
NAME,SIMPLE_NAME,DEPT_TYPE,SHOW_ORDER,ORGAN_CODE,COMMENTS,
UPDATE_BY,UPDATE_DATE,TELEPHONE,FAX_CODE,EMAIL,ENABLED,NODE_ROUTE,NODE_LEVEL)
]]> </mainTable>
</do>
<!-- 更改一级机构的父节点为负1 -->
<end-do>update SYS_DEPARTMENT_INFO set PARENT_DEPT_ID=-1 where DEPT_ID=1</end-do>
<!-- 计算节点路径和节点级别-->
<end-do>@DeptTreeRoute({tableName:SYS_DEPARTMENT_INFO,idField:DEPT_ID,pidField:PARENT_DEPT_ID})</end-do>
<!--sequence维护到序列表 -->
<end-do>
@myTableSequence({keyName:SYS_DEPARTMENT_INFO})
</end-do>
<!--更改部门的级别 -->
<end-do>
update SYS_DEPARTMENT_INFO d set d.dept_type=3 where d.parent_dept_id in(1,28)
</end-do>
<end-do>
update SYS_DEPARTMENT_INFO d set d.dept_type=2 where d.parent_dept_id=6
</end-do>
<end-do>
update SYS_DEPARTMENT_INFO d set d.dept_type=4 where d.parent_dept_id=-1
</end-do>
<end-do>
update SYS_DEPARTMENT_INFO d set d.dept_type=1 where d.dept_id in(6,28)
</end-do>
</import>
<!-- ####################################资源级别报价的导入############################## 注:其中有些部门ID 在部门信息表中找不到对应的部门ID 会报错-->
<import id="sys_userleavePrice" datasource="pias" clear="true" active="true" startRow="2" titleRow="1" fkFilter="true" dist="deployData/system" files="资源级别报价.xls$">
<pre-do>delete from SYS_USER_INFO</pre-do>
<do>
<mainTable> <![CDATA[(${id},${departmentId},${level},${pay},@deptEnum(${is_delete}))
into SYS_USER_LEVEL_PRICE (LEVEL_ID,DEPT_ID,APTITUDE_LEVEL,PRICE_VALUE,ENABLED)
]]> </mainTable>
</do>
<!--sequence维护到序列表 -->
<end-do>
@myTableSequence({keyName:SYS_USER_LEVEL_PRICE})
</end-do>
</import>
<!-- ####################################### 人力资源信息的导入###########${level} :LEVEL_ID################################################ -->
<import id="sys_userInfo" datasource="pias" clear="true" active="true" startRow="2" titleRow="1" fkFilter="true" dist="deployData/system" files="资源信息.xls$">
<pre-do>
delete from SYS_RES_POOL_USER
</pre-do>
<do>
<mainTable> <![CDATA[
(
${UserID},${EmployeeCode},${UserName},${level},${LoginName},
${priceType},@SexEnum(${Gender}),
${Description},${Email},
${PhoneNumber}, ${AttachDepartmentID},${useDeptId},@MobileSubStr(${celltelephone}),
${utmost},${person_code},
${ModifyPerson}, ${ModifyDate} , ${startdate},
${enddate},@deptEnum(${delFlag}),${pmslogin})
into SYS_USER_INFO (
USER_ID, USER_CODE,NAME,LEVEL_ID,ENGLISH_NAME,
PRICE_TYPE, SEX,
COMMENTS, EMAIL,
TELEPHONE,DEPT_ID,WORK_DEPT_ID, MOBILE_NO,
MAX_DAY_WORK_HOURS, IDENTITY_ID,
UPDATE_BY, UPDATE_DATE,INDUTY_DATE,
OUTDUTY_DATE , ENABLED, PMS_ID)
]]> </mainTable>
</do>
<!--sequence维护到序列表 -->
<end-do>
@myTableSequence({keyName:SYS_USER_INFO})
</end-do>
<!--更改级别ID -->
<end-do>
update sys_user_info d set d.level_id=
(select t.aptitude_level from SYS_USER_LEVEL_PRICE t where t.level_id=d.level_id)
</end-do>
<!--更改sag表的enabled标志 -->
<end-do>
update sag_user t set t.enabled=
(select d.enabled from sys_user_info d where d.user_id=t.user_id)
</end-do>
</import>
<!-- #####################################资源池用户信息表的导入#####################################-->
<import id="poolUserInfo" datasource="pias" clear="true" active="true" startRow="2" endRow="836" titleRow="1" fkFilter="true" dist="deployData/system" files="资源池人员用户信息.xls$">
<do>
<mainTable> <![CDATA[(
@organNoSeq(poolUserID),${用户ID},@myPoolId(keyParam:@myTrim(${所属资源池})),1,@myCapdict(keyParam:@myTrim(${等级})),100,1)
into SYS_RES_POOL_USER (
ID,USER_ID,POOL_ID,CAPABILITY_ID,
CAPABILITY_LEVEL_ID,RATE,ENABLED
)]]> </mainTable>
</do>
<!--sequence维护到序列表 -->
<end-do>
@myTableSequence({keyName:SYS_RES_POOL_USER})
</end-do>
<end-do>
update SYS_RES_POOL_USER t set t.capability_id=
(select t1.CAPABILITY_ID from SYS_RES_POOL_CAPABILITY t1 where t1.pool_id=t.pool_id)
</end-do>
<!--更改未明确的人的职能级别为0
<end-do>
update SYS_RES_POOL_USER sss set sss.capability_level_id=16 where sss.capability_id in(17,18,56)
</end-do>
-->
<!--更改不在职的状态 -->
<end-do>
update SYS_RES_POOL_USER sss
set sss.enabled=
(select t.enabled from sag_user t where t.user_id=sss.user_id)
</end-do>
</import>
<!-- #####################################资源池经理表的导入#####################################-->
<import id="resPoolMaster" datasource="pias" clear="true" active="true" startRow="2" titleRow="1" dist="deployData/system" files="资源池经理.xls$">
<do>
<mainTable> <![CDATA[(
${POOL_ID},${MASTER},${ENABLED})
into SYS_RES_POOL_MASTER (
POOL_ID,MASTER,ENABLED
)]]> </mainTable>
</do>
</import>
<!-- #####################################部门负责人表的导入#####################################-->
<import id="deptMaster" datasource="pias" clear="true" active="true" startRow="2" titleRow="1" dist="deployData/system" files="部门负责人.xls$">
<do>
<mainTable> <![CDATA[(
${DepartmentID},${UserID},${ModifyPerson},@dateFormat(${ModifyDate}) )
into SYS_DEPARTMENT_MASTER (
DEPT_ID,USER_ID,CREATE_BY,CREATE_DATE
)]]> </mainTable>
</do>
</import>
<!-- #####################################工作类型表的导入#####################################-->
<import id="workType" datasource="pias" clear="true" active="true" startRow="2" titleRow="1" dist="deployData/system" files="项目主阶段对应工作类型.xls$">
<pre-do>
delete from SYS_PJ_RES_DISTRIBUTE
</pre-do>
<do>
<mainTable> <![CDATA[(
${WORK_TYPE},${WORK_TYPE_NAME})
into SYS_PROJECT_WORK_TYPE (
WORK_TYPE,WORK_TYPE_NAME
)]]> </mainTable>
</do>
<!--sequence维护到序列表 -->
<end-do>
@myTableSequence({keyName:SYS_PROJECT_WORK_TYPE})
</end-do>
</import>
<!-- #####################################参数表的导入#####################################-->
<import id="resDistribute" datasource="pias" clear="true" active="true" startRow="2" titleRow="1" dist="deployData/system" files="项目资源分布参数.xls$">
<do>
<mainTable> <![CDATA[(
${BATCH_TEMPLATE_TYPE},${MAIN_PHASE},${WORK_ITEM_TYPE},${WORK_TYPE},${ROLER},${SUB_PHASE},${RATE},${IS_LOCK})
into SYS_PJ_RES_DISTRIBUTE (
BATCH_TEMPLATE_TYPE,MAIN_PHASE,WORK_ITEM_TYPE,WORK_TYPE,ROLER,SUB_PHASE,RATE,IS_LOCK
)]]> </mainTable>
</do>
</import>
<!-- #####################################应用系统表的导入#####################################-->
<import id="application" datasource="pias" clear="true" active="true" startRow="2" titleRow="1" dist="deployData/system" files="应用系统.xls$">
<do>
<mainTable> <![CDATA[(
${APP_ID},${APP_CODE},${APP_NAME},${COMMENTS},${ENABLED},${DEPT_ID})
into SYS_APPLICATION (
APP_ID,APP_CODE,APP_NAME,COMMENTS,ENABLED,DEPT_ID
)]]> </mainTable>
</do>
<!--sequence维护到序列表 -->
<end-do>
@myTableSequence({keyName:SYS_APPLICATION})
</end-do>
</import>
<!-- #####################################日终事务表的导入#####################################-->
<import id="transLog" datasource="pias" clear="true" active="true" startRow="2" titleRow="1" dist="deployData/system" files="系统日志表.xls$">
<do>
<mainTable> <![CDATA[(
${TRANS_ID},${TRANS_CODE},${TRANS_NAME},${RUN_FREQUENCY},${COMMENTS},${ENABLED})
into SYS_DAILY_TRANSACTION (
TRANS_ID,TRANS_CODE,TRANS_NAME,RUN_FREQUENCY,COMMENTS,ENABLED
)]]> </mainTable>
</do>
<!--sequence维护到序列表 -->
<end-do>
@myTableSequence({keyName:SYS_DAILY_TRANSACTION})
</end-do>
<!--更改离职人员的状态 -->
<end-do>
update sys_user_info d set d.enabled=0
where d.user_id in
(1501,1511,1281,53,54,55,1667,180,1273,1255,1258,1260,1261,1272,1298,1337,1352,1380,1382,1425,1481,1500,
1468,1455,1457,229,1078,1281,1357,1478,1485,1526,1527,1528,1529,1530,1634)
</end-do>
<end-do>
update sag_user d set d.enabled=0
where d.user_id in
(1501,1511,1281,53,54,55,1667,180,1273,1255,1258,1260,1261,1272,1298,1337,1352,1380,1382,1425,1481,1500,
1468,1455,1457,229,1078,1281,1357,1478,1485,1526,1527,1528,1529,1530,1634)
</end-do>
</import>
</sagacity>
评论
我之前自己写过一个关于模版映射的组件,把excel导入和导出通过excel模版规范导出的样式,通过一个xml来校验格式,很想借鉴下你的做法,把这个组件继续完善。
如果可以希望提供份源码,非常感谢。
我的邮箱是xosadan@163.com;非常感谢
发表评论
-
sqltoy-orm 增删改和load操作介绍
2017-08-19 00:40 1151上一篇sqltoy-orm 最佳查询介绍:http://z ... -
讲述最值得你了解的sqltoy-orm最佳查询实践
2017-05-19 00:08 2726sqltoy-orm(https://github.c ... -
正式开源sqltoy-orm框架
2016-12-27 00:33 2156https://github.com/chenrenfe ... -
Sqltoy ORM框架之:分页查询(没错包含你所有所有能用到的关系型数据库分页)
2014-06-04 18:00 2645本来打算再过一阵子整体介绍一下个人的Sqlto ... -
写在SqlToy ORM开源之前
2013-07-05 02:01 0一直想将SqlToy ORM开源,却一直比较忙,没有时间对整个 ... -
睿智平台中超完整的日期处理工具类DateUtil
2011-01-20 16:43 1504很多地方都会用到Date日期处理,睿智平台当然也包括自己的da ... -
xtable功能介绍以及改进计划
2009-06-25 15:06 2408xtable是由陈仁飞(zhongxuchen)独自开发的js ... -
数据库动态查询最佳实现
2009-03-24 16:27 5661上次发表过这样的介绍,可能是我介绍的不够准确,太多人都没有搞明 ... -
数据库表SEQUENCE产生
2009-02-19 16:27 2104补充说明:目前这种模式已经非常不合理了,经过一系列项目数据库 ... -
动态数据源
2009-02-18 13:12 1644SAGACITY(睿智)框架中的部 ... -
开创性的陈氏数据库动态查询设计
2009-02-17 11:19 3729(新版增加了直接结果映 ...
相关推荐
而决策表编辑器则支持从Excel格式导入和导出规则,方便非技术人员参与规则制定。此外,插件还支持规则的版本控制,便于团队协作和规则的版本管理。 总之,droolsjbpm-tools-distribution-7.36.0.Final.zip是Eclipse...
压缩包内除了包含"platform-tools-1.0.41-windows"文件夹,还有"新建 Microsoft Excel 97-2003 工作表.xls",这可能是一个文档,详细列出了该版本平台工具的使用指南、注意事项或是更新日志。通过阅读这个文档,...
“IMAddin.vsto”可能是一个Visual Studio Tools for Office (VSTO) 的项目文件,这通常用于开发Excel的自定义功能或插件。“Application Files”可能包含了程序运行所需的其他组件。 因此,这个压缩包可能包含一个...
1. 数据接口:用于导入和导出数据的模块,可能支持CSV、Excel、数据库等格式。 2. 数据预处理:清洗、转换和格式化数据以适应精算分析。 3. 精算模型:包含各种精算模型,如生命周期模型、死亡率模型、损失分布模型...
**Excel 2003-2007 Power Tools 插件详解** Excel作为Microsoft Office套件中的核心组件,一直以来都是数据分析、报表制作和数据管理的重要工具。然而,尽管其内置的功能已经相当丰富,但用户有时仍需要更高级或...
v1.1按类别将商品固定到商店JD Central Tools - 易于数据提取产品,价格,销售等级,审查简单数据提取工具,价格,价格,销售,评论该Chrome Extension允许您以可编辑的Excel格式将产品详细信息分开。现在您可以...
标题中的“SEO tools”指的是搜索引擎优化(Search Engine Optimization)工具,这是用于提升网站在搜索引擎结果页排名的一系列技术和策略。这些工具通常可以帮助网站管理员、数字营销人员或SEO专家分析和改进网站的...
- **医疗保健**:分析患者数据改进治疗方案。 #### 六、总结 通过对SQL和Excel这两种工具的学习和实践,《使用SQL和Excel进行数据分析》为读者提供了一条系统地掌握数据分析技能的路径。无论是对于初学者还是希望...
在性能优化方面,SQL TOOLS 2.0可能提供SQL性能分析和调优工具,帮助用户找出执行慢的查询并提供改进建议。增强版可能进一步增强了这方面的功能,如SQL执行计划分析,或者引入了智能提示和优化建议。 最后,版本...
"VSTO"指的是Visual Studio Tools for Office,这是一个开发平台,允许开发者使用.NET Framework来创建Office应用程序的自定义解决方案,包括Excel。"务必装上 VSTO安装环境包"提示我们,在安装这个Excel工具箱之前...
3. **数据导入导出功能**:JavaTools的核心功能是数据导入和导出,它可以读取CSV、Excel、XML、JSON等格式的文件,并将数据导入到数据库中,同时也可以将数据库中的数据导出为这些文件格式,方便数据交换和备份。...
垫图像导入监视器 描述 这是为在后端上导入图像而创建的管理工具的子集。 ...2014年基于原始java + excel-tools的初始版本 需要 用于建筑 专家 IDE(我用eclipse构建了它) 使用 Java 具有html5-s
用户可以轻松获取网站的外部链接数据,包括链接来源、锚文本、链接质量等信息,这对于评估竞争对手的链接策略和构建自己的链接建设计划至关重要。 此外,此插件还支持批量检查网站的SEO基础元素,如元标签(title、...
2. **查询性能分析器**:通过追踪和分析查询执行计划,SSMS Tools Pack可以帮助优化查询性能,找出耗时较长的SQL语句并提供改进建议。 3. **快速查找**:提供全局搜索功能,可以在整个数据库中快速查找特定的文本、...
这对于开发者而言是一个巨大的优势,他们可以根据自己的需求定制功能,或者为社区贡献新的功能和改进。开源软件通常拥有活跃的社区支持,用户可以通过论坛、邮件列表或GitHub等平台寻求帮助、报告问题或分享自己的...
此版本在原有的基础上进行了多项改进和升级,旨在提升用户的工作效率和数据库管理体验。 首先,SQL TOOLS 2.0的一大亮点是其远程连接功能。这使得用户能够方便地连接到不同地理位置的数据库服务器,无论是局域网内...
- 产品特征- 价格 - 销售价格和细节 - 产品网址 - 产品图片和规格- 顾客评价技术支援:我们很乐意倾听意见或意见来改进产品。请联系:mail.weloveshe@gmail.com开发人员:www.weloveshee.com.隐私政策...
开源软件的特性鼓励社区参与,促进了代码的持续改进和新功能的添加,同时也降低了依赖单一供应商的风险。 在提供的压缩包文件中,我们可以看到以下几个文件: 1. `ComTool.bpl`:这是一个Binary Package Library...
3、获取多段线的拐点坐标,并导出至Excel及txt。 升级日志 AsLine v3.0 to AsLine v4.0 ------------------------------------------- 1、改进:剖面线支持折线; 2、改进:剖面交点最多可支持10000个; 3、优化:...
支持“链接后动作(post_link_action)”(参见tools\link.ini中注释) 4. 重新整理所有官方支持库的静态库,有望彻底解决链接时可能出现的符号冲突 5. 全面取消静态编译中的人为功能限制(此前有最多5个支持库同时...