目前我有个需求:从ERP 的几个表获得每日更新的数据,然后把数据导出到csv 文件内。
ERP的数据库是ORACLE 。
我目前实行的情况: 建立数据源,能够从ERP 数据库内 几个表取得数据到我的本地MS SQL 数据库表内,然后可以把本地表数据导出到CSV 文件内。
存在的疑问:
1. 怎么实行第一次获取全部数据。
2.以后每天SSIS包执行的时候,只是更新已经有的数据或者插入没有的数据,并且把变化(更新或者插入)的数据导出到CSV文件内。
我应该怎么做那?
1、第一次导入应该没有问题。
2、有几个思路:
(1)SSIS 中有模糊查找(Fuzzy lookup),可以满足你的需求
(2)可以使用CDC或更改跟踪(http://www.cnblogs.com/downmoon/archive/2012/04/10/2439462.html)
(3)可以直接在SSIS中使用Merge语法(http://www.cnblogs.com/downmoon/archive/2010/10/17/1853833.html)
目前我想这样操作,在数据库内做一个表格,记录SSIS 包执行时间,然后在 取得数据源的时候,使用执行SQL 任务取得这个时间,赋值给一个变量,在OLE 数据源定义的时候 使用SQL COMMAND 方式,在SQL 语句里面增加WHERE XXX.XXX > 变量 ,就是获得时间晚于SSIS 包执行时间的数据。
但是目前的问题是,我的SQL 任务执行后,赋值给一个包变量,但是在OLE 数据源 的SQL 语句里面怎么使用引用这个变量? 是使用SQL COMMAND 方式 还是 SQL COMMAND FROM VARIABLE
我想问一下 megre into A
using B on .....
这个B表是如何从数据流的目标表中使用的? 就是如何在megre 引用从源数据表过来的数据?
谢谢!
1. 怎么实行第一次获取全部数据:
--可以通过SSIS或者连接服务器直接从数据源倒入数据,生成与数据源同构的表结构。
2.以后每天SSIS包执行的时候,只是更新已经有的数据或者插入没有的数据,并且把变化(更新或者插入)的数据导出到CSV文件内。
--如果数据源表有数据更新的时间戳字段input_time,可以根据时间戳和关键字段进行增量倒入更新;
如果数据源有跟踪数据变化的translog 记录表,也可以根据translog记录来更新目的表。
--每次从数据源导出的数据可以放在本地临时表,每次导完,可用将临时表数据倒入CSV文件导出。
3。怎么增加一个记录表,来记录每次导入导出的数据记录数和操作日期
--创建log记录表,除了自增ID字段外,还包括要记录的数据量字段和时间字段(如果能加个状态记录更安全),在SSIS执行过程中添加一个记录操作,将临时表数量和当前操作时间记录log记录表中。 此方法同样可用于ssis log,便于故障分析。
如果用 Transact-SQL,还可以用@@ROWCOUNT的值返回数据记录数。
目前我想这样操作,在数据库内做一个表格,记录SSIS 包执行时间,然后在 取得数据源的时候,使用执行SQL 任务取得这个时间,赋值给一个变量,在OLE 数据源定义的时候 使用SQL COMMAND 方式,在SQL 语句里面增加WHERE XXX.XXX > 变量 ,就是获得时间晚于SSIS 包执行时间的数据。
但是目前的问题是,我的SQL 任务执行后,赋值给一个包变量,但是在OLE 数据源 的SQL 语句里面怎么使用引用这个变量? 是使用SQL COMMAND 方式 还是 SQL COMMAND FROM VARIABLE ?
@figofeng: ole db 源 的 sql command text 内怎么使用变量作为参数啊
源数据库是ORACLE 的