动态SSIS包可将N个表从Oracle加载到SQL

问题描述

我们在Oracle服务器上有N个表,我们想将所有这些表从Oracle加载到sql Server。我们正在为其创建动态SSIS软件包,这些软件包将使用Oracle ServerName,DB名称,架构名称,表列表等,并将所有这些表加载到sql Server。我们已经在Oracle的sql Server(SSMS)上添加链接服务器。

但是我们没有获得有效的方法来做到这一点。我们如何在单个SSIS包中实现这一目标。如何处理Oracle表的元数据并在sql Server上创建元数据?这个SSIS包也应该在sql Server上动态创建表,为此,我们在SSIS包中尝试了Temp表。

解决方法

由于必须处理大量表,因此我将编写一个类似以下内容的pl / sql过程:

声明 v_sql varchar2(1024);

begin
for x in (select owner,table_name from dba_tables where .....)
  v_sql := 'created table '||
           table_name ||
           '@mssql a select * from '||
           x.owner || '.' || x.table_name || ';';
  exec immediate v_sql;
end loop;
end;
/

或者,如果要在启动之前进行查找,请使用sql编写sql。在sqlplus中:

set echo off feedback off verify off trimsp on pages 0
spool doit.sql
select 'create table '||
        table_name ||
        '@mssql as select * from '||
        owner || '.' || table_name || ';'
from dba_tables
where .....
;
spool off

然后在运行之前检查假脱机的sql文件是否存在任何问题。

上面的所有代码都不在我的脑海。可能存在语法上的小问题。