datastage数据同步.docx
- 文档编号:2967729
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:10
- 大小:516.05KB
datastage数据同步.docx
《datastage数据同步.docx》由会员分享,可在线阅读,更多相关《datastage数据同步.docx(10页珍藏版)》请在冰豆网上搜索。
datastage数据同步
数据同步
Datastage安装完成、创建工程后,双击“designer”客户端图表,运行该客户端,创建connection文件夹用以保存在以后job中使用的数据连接(数据源),在“表定义”文件夹中创建相应各个数据库针对的不同文件夹用以保存从不同数据库中导入的表。
创建“参数”文件夹用以保存工程中使用的各个参数。
每个job编辑完成后要先进行编译,编译无错后,才可以进行执行(菜单栏图标分别为
)
1、并行job
并行job,用以实现单个表的数据同步问题。
在job文件夹下创建该类型表的对应文件夹,然后在其中选择新建并行job,创建成功后,点击保存、命名该job。
工具栏内提供需使用的各种插件。
2、参数&参数集
用以实现对数据同步的条件控制
3、序列job
为方便对多个同种类型的表进行统一调度,序列job可以将并行job串成一个job
4、任务调度
使用dsjob.exe实现对各个工程的脚本执行
5、例子
a.创建并行job
在相应文件夹下,选择新建-》并行job
创建成功后,选择保存,输入相应名即可。
b.创建数据源,导入所需表
在connection文件夹下创建本job要使用的数据源(如已有相应数据源则直接使用即可)
在弹出的对话框选择-》参数tab页,点击右侧按钮选择相应的数据源类型后,按照要求输入相应信息即可,点击保存。
在表定义的相应数据库中选择导入所需的相应数据表。
c.编辑并执行并行job
1)目标源创建
建立好数据源后,在工具栏内找到本job相应所需要的源端数据来源类型,如sqlsever或oracle小工具,拖入到job页面。
同理将目标源拖入到job页面,在工具栏的“常规”tab页找到链接,将二者相连接。
以sqlserver为例,做以下说明(oracle与db2类似)
第一行填写查询语句,也可以读方法选择生成语句,然后由自带builder进行查询语句创建
创建方法如下:
先选择读方法=builder生成器,然后点击查询后,出现构建sql按钮,点击后,出现如下页面,将所要做源的表从表定义相应位置拖曳到右侧空白处,全选列拖入到中间列表出即可。
查询条件若无可以选择null,然后点击确定即可。
若该查询涉及条件和参数可以在生成的sql基础上进行修改,生成sql后,将读方法改为用户自定义sql,在sql编辑框右侧按钮可选择插入该作业的参数如时间参数等。
填写完毕后,点击查看数据,若可看到相应数据,则数据来源设置完毕。
2)目标表
本例子中,目标为db2数据库,具体设置如下图,sql语句也可以选择让系统自动生成,填写相应表明即可。
只插入新增加行方式和先删除后插入等方式需确保目标表和源表都含有主键或唯一键。
3)参数集、参数
对于有些job需要使用参数,如时间参数用以减少每次更新数据的压力。
如以下语句即使用了数据集SA000HN下的参数datetime_1和date_time2
SELECT
SP001HN.date_time,
Fromesair.dbo.SP001HNASSP001HN
WHERESP001HN.date_time>convert(DATETIME,'#SA000HN.date_time1#',120)andSP001HN.date_time<=convert(DATETIME,'#SA000HN.date_time2#',120)
参数集的创建,在参数文件夹下选择创建参数集、保存即可,在弹出的对话框内设置改参数集下所具有的参数,参数集内参数的值可以设置默认值也可以使用文本模式传值进来,本工程中为实现数据的实时同步,采用的事使用文本文件方式。
在C:
\IBM\InformationServer\Server\Projects\lhbdc\ParameterSets文件夹下可以看到设置的各个参数集目录,在参数集目录下创建txt文件,该参数集可以识别到,并分析出相应的值,但是txt文件内参数名的格式要严格一致,例如如下样式:
date_time1=2013-04-2516:
00:
00
date_time2=2013-04-2616:
00:
00
创建txt文件后可以在参数集该参数集属性值内看到该txt并默认识别出参数和相应值
选择该参数集图表拖入到相应job页面后,该参数集即加入到该job中,在sql语句中选择添加作业参数时即可以看到该参数集。
Job创建完成后,选择编译,无错后选择执行,若无错则可将其加入到该类型的序列job中。
d.创建序列job
在新建中选择序列job并进行保存。
序列job需要一个startLoop插件和一个stopLoop插件,然后将组成该序列的并行job图标一个个拖入,链接这些组件如下所示。
StartLoop和EndLoop必须构成回路。
Start组件设置如下:
每个并行job设置如下:
编译无错,执行即可,该job执行会在director内发现所含有的并行job都进行了依次执行,如其中有并行job未进行编译将中止报错。
e.执行脚本
dsjob语句
C:
\IBM\InformationServer\Server\DSEngine\bin\dsjob.exe-run-modeNORMAL-jobstatuslhbdcDC_SEQ_KQZ_SG_MN
>>e:
\dslogs\job_DC_SEQ_KQZ_SG_MN_run.log
自动获得当前时间并取得前一天的当前时间输出到参数文件脚本如下
@echooff
rem计算指定天数之前的日期
setDaysAgo=1
rem假设系统日期的格式为yyyy-mm-dd
call:
DateToDays%date:
~0,4%%date:
~5,2%%date:
~8,2%PassDays
set/aPassDays-=%DaysAgo%
call:
DaysToDate%PassDays%DstYearDstMonthDstDay
setDstDate=%DstYear%-%DstMonth%-%DstDay%
remecho%DaysAgo%天的日期是%DstDate%
echodate_time1=%DstDate%%TIME:
~0,8%>C:
\IBM\InformationServer\Server\Projects\lhbdc\ParameterSets\SA000HN\SA000HN.txt
echodate_time2=%DATE:
~0,10%%TIME:
~0,8%>>C:
\IBM\InformationServer\Server\Projects\lhbdc\ParameterSets\SA000HN\SA000HN.txt
rempause
goto:
eof
:
DateToDays%yy%%mm%%dd%days
setlocalENABLEEXTENSIONS
setyy=%1&setmm=%2&setdd=%3
if1%yy%LSS200if1%yy%LSS170(setyy=20%yy%)else(setyy=19%yy%)
set/add=100%dd%%%100,mm=100%mm%%%100
set/az=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
set/aj=j/5+dd+y*365+y/4-y/100+y/400-2472633
endlocal&set%4=%j%&goto:
EOF
:
DaysToDate%days%yymmdd
setlocalENABLEEXTENSIONS
set/aa=%1+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
set/ad=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5
set/add=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
(if%mm%LSS10setmm=0%mm%)&(if%dd%LSS10setdd=0%dd%)
endlocal&set%2=%yy%&set%3=%mm%&set%4=%dd%&goto:
EOF
f.任务调度
保存以上脚本后利用系统任务调度,实现数据的同步。
6、常见问题
两边表数据类型不一致,长度不一致导致数据截断—》需更改目标表表结构和字段长度
序列job中止-》有并行job出现错误或者有未编译的job
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- datastage 数据 同步
![提示](https://static.bdocx.com/images/bang_tan.gif)