2012-12-18 66 views
1

我想将Oracle数据库表中列的内容复制到SQL Server数据库中的另一列。我有超过300万行转移。解决这类问题有什么简单的方法吗?并非Oracle表中的所有内容都将被传输,因为Oracle表有大约400万行从Oracle复制到SQL Server表中

+1

当你说“sql table”时,你的意思是SQL/Server吗? –

+0

你有任何ETL工具吗? – luchosrock

回答

1

那么,假设您的意思是SQL/Server,那么我将使用SQL Server Integration Services(SSIS),这将相当容易我最近做了这样的事情。一个重要的提示是将数据放在一个没有索引的表中,其中Oracle VARCHAR2列(如果有的话)映射到SQL/Server中的NVARCHAR,这样可以避免SSIS中的数据转换步骤。从暂存表中,您可以将它们放入正确的目标表中,然后摆脱暂存表。这是我做到的方式。

您可以将数据导入MS/Access数据库并使用SQL/Server导入/导出向导。这很快,如果你有Ms/Access方便的话,或许你的最好的选择。

您可以在SQL/Server中创建一个链接服务器,从中您可以简单地将数据吮吸到数据库中。这种方法我得到了不同的结果。它确实有效,但我发现它有时可能有点片面。这可能与我们的基础架构有关,而不是Oracle Linked Servers固有的弱点。如果遇到问题,您可以将逻辑上的数据进行分区并将其分解为SQL/Server。链接服务器是相当优雅的,但如果你能让他们工作。您使用OPENQUERY()从Oracle检索数据,例如

Select * Into SqlServerTableName 
    From OpenQuery(Oracle_Linked_Server,'Select * from OracleTable 
             Where etc'); 

您也可以将数据导出到平(或CSV)文件并导入,再次SSIS能做到这一点,但它不会那么容易。这很容易格式化和导出/导入差异

0

澄清Ciarán的答案的最后一句。 我用来做什么的这样:从Oracle表用sqlplus和阀芯(sample

  • 出口数据;
  • 使用bcp实用程序快速加载到MS SQL中(documentation)。