0

我们在 Oracle 服务器上有 N 个表,我们希望将所有这些表从 Oracle 加载到 SQL 服务器。我们正在为其创建动态 SSIS 包,它将采用 Oracle 服务器名称、数据库名称、模式名称、表列表等,并将所有这些表加载到 SQL 服务器。我们为 Oracle 添加了 SQL Server 上的链接服务器 (SSMS)。

但是我们没有得到有效的方法来做同样的事情。我们如何在单个 SSIS 包中实现这一点。我们如何处理 Oracle 表的元数据并在 SQL 服务器上创建相同的元数据?这个 SSIS 包也应该在 SQL 服务器上动态创建表,为此我们在 SSIS 包中尝试了临时表。

4

1 回答 1

0

由于您必须使用大量表来执行此操作,因此我会编写一个 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 文件是否有任何问题。

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

于 2020-09-08T16:31:50.730 回答