问题描述
我们在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文件是否存在任何问题。
上面的所有代码都不在我的脑海。可能存在语法上的小问题。