sqlserver中SSIS的使用(oracle数据传输到sqlserver)及java调用

1.安装sqlserver2008后,网上搜索相关资料了解到SSIS需要运行SQL Server Data Tools,但是在ss2008中却找不到这个东西。后来一一点击尝试,发现ss2008中叫SQL Server Business Intelligence Development Studio。(应该是版本差异导致的)

2.可以正常启动后,参照 (https://blog.csdn.net/chadcao/article/details/53133723) 进行实验,发现可以正常在SQLSERVER数据库中进行数据读写。 直到 “回到SQL 2012,右击Integration Services目录创建目录,在这里我密码就输入1了”这一步,因版本差异,我没有进行测试。

3.该文章只是介绍了 在sqlserver中进行简单的数据传输,满足不了业务上的需求,于是自己鼓捣,添加OLE DB oracle源。ORCL为oracle实例名。

sqlserver中SSIS的使用(oracle数据传输到sqlserver)及java调用_第1张图片

调整OLE DB源后,在oracle到sqlserver进行数据传输时报错,后把 UNIQUEIDENTIFIER  类型 调整为 NVARCHAR 后可以正常执行,不太清楚UNIQUEIDENTIFIER 在oracle中对应什么数据类型。

4.跨数据库传输成功后开始考虑动态传入参数的问题,因为现在SQL语句都是写死在SSIS数据流中的,那每次跑数据都要在SSIS中调整SQL语句的话就太费劲了,参数肯定是要动态传递滴,但是怎么传呢。。

在该界面中定义三个变量 ,并且sql参数的EvaluateAsExpression属性要调整为true。

strsql='select * from student where studentid =' 

studentid='?'

sql=strsql+studentid

sqlserver中SSIS的使用(oracle数据传输到sqlserver)及java调用_第2张图片

5.修改OLE DB源的数据访问模式为 变量中的SQL命令,选择User::sql变量,点击确定,OK,正常保存。

sqlserver中SSIS的使用(oracle数据传输到sqlserver)及java调用_第3张图片

6.java程序调用

将dtsx文件保存到某个固定盘符下,然后在java中写main方法,代码如下

Process executionProcess = Runtime
                    .getRuntime()

                    .exec("dtexec /f \"E:\\ajava\\Package.dtsx\"  /set \\Package.Variables[User::studentid];1");

E:\\ajava\\Package.dtsx 为dtsx保存的路径, /set \\Package.Variables[User::studentid];1  传入参数studentid=1。

运行main方法,正常执行。

你可能感兴趣的:(SSIS)