史荣久 2010年06月19日 星期六 20:56 | 1670次浏览 | 4条评论
http:
DataSync 是一个小布丁点的工程,用来在两个数据库间倒扯数据。
<
xml
> 配置文件
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
064
065
066
067
068
069
070
071
072
073
074
075
076
077
078
079
080
081
082
083
084
085
086
087
088
<?xml
version="1.0" encoding="UTF-8"?>
<
root
>
<!--
数据库配置 -->
<
database
>
<!--
源数据库 -->
<
source
>
<
driver
>
com.ibm.db2.jcc.DB2Driver
<
/driver
>
<
url
>
jdbc:db2://10.4.9.52:50000/SEC0601
<
/url
>
<
user
>
db2inst1
<
/user
>
<
pass
>
LNjT4DRw
<
/pass
>
<
/source
>
<!--
目标数据库 -->
<
target
>
<
driver
>
com.ibm.db2.jcc.DB2Driver
<
/driver
>
<
url
>
jdbc:db2://10.4.5.242:50000/PLX
<
/url
>
<
user
>
db2inst1
<
/user
>
<
pass
>
s1Iup3Dz
<
/pass
>
<
/target
>
<
/database
>
<!--
全局变量 以 ${name}格式调用 -->
<
parameters
>
<!--
| type=text时,以字符串保持value值或value指向文件的全部内容。
| type=list时,以字符串列表保持value值或value指向文件的每一行。
-->
<
para name=
"
system.commit.debug"
type=
"
text"
value=
"
true"
/
>
<
para name=
"
system.target.delete"
type=
"
text"
value=
"
false"
/
>
<
para name=
"
system.target.existed"
type=
"
text"
value=
"
delete"
/
>
<
para name=
"
system.source.delete"
type=
"
text"
value=
"
false"
/
>
<!--
./data/loanid.txt 文件一行一个债权,存到 loanids的List中 -->
<
para name=
"
loanids"
type=
"
list"
value=
"
./data/loanid.txt"
/
>
<
para name=
"
logno"
type=
"
text"
value=
"
9999"
/
>
<
/parameters
>
<!--
操作对象(表) -->
<
candidate
>
<!--
表的共通字段 -->
<
common
>
<!--
使用变量 logno -->
<
column name=
"
LOGNO"
value=
"
${logno}"
/
>
<!--
使用固定值 9999 -->
<
column name=
"
CREATEDBY"
value=
"
9999"
/
>
<!--
| 可以是固定值 2010-05-05 05:05:05 也可是DB变量 CURRENT TIMESTAMP
| mutable 为true,该字段可变,不能作为where条件。默认为false。
-->
<
column name=
"
CREATEDDT"
mutable=
"
true"
value=
"
CURRENT TIMESTAMP"
/
>
<
/common
>
<
tables
>
<!--
表的集合 -->
<
table name=
"
LOAN"
>
<!--
表名 LOAN -->
<!--
该表在源数据库上抽取数据的SQL,使用全局变量 loanids -->
<
source
>
SELECT * FROM LOAN WHERE
LOANID IN (${loanids})
<
/source
>
<
/table
>
<
table name=
"
CUSTOMER"
>
<!--
以源数据中LOAN表的CUSTID集合作为参数 -->
<
source
>
SELECT * FROM CUSTOMER WHERE
CUSTID IN (${LOAN:CUSTID})
<
/source
>
<
target
>
<!--
| 在目标数据库中,该表的指定字段如何设值
| 这里按源数据对应关系,设置成目标数据库中PERSON表的PERSONID值。
-->
<
column name=
"
PERSONID"
value=
"
${PERSON:PERSONID}"
/
>
<
/target
>
<
/table
>
<
table name=
"
PERSON"
>
<
source
>
SELECT * FROM PERSON WHERE
PERSONID IN (${CUSTOMER:PERSONID})
<
/source
>
<
/table
>
<
table name=
"
CONTRACT"
>
<
source
>
SELECT * FROM CONTRACT WHERE
LOANID IN (${LOAN:LOANID})
<
/source
>
<
target
>
<!--
在目标数据库中执行SQL,以返回值设置字段值 -->
<
column name=
"
CONTRACTSEQ"
clazz=
"
SqlQuery"
value=
"
SELECT CASE WHEN MAX(CONTRACTSEQ) IS NULL THEN 1
ELSE MAX(CONTRACTSEQ)+1 END FROM CONTRACT
WHERE LOANID=${CONTRACT:LOANID}"
/
>
<
/target
>
<
/table
>
<
/tables
>
<
/candidate
>
<
/root
>
Zeuux © 2024
京ICP备05028076号
回复 达伦王 2010年06月21日 星期一 21:16
see this:
http:
回复 史荣久 2010年06月22日 星期二 08:38
ddlu
回复 达伦王 2010年06月22日 星期二 08:49
回复 史荣久 2010年06月22日 星期二 09:01