从Oracle复制到SQL Server表

时间:2012-12-18 18:44:44

标签: sql database oracle

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

2 个答案:

答案 0 :(得分:1)

好吧,假设你的意思是SQL / Server,我会使用SQL Server Integration Services(SSIS),这很容易做到,而且我最近做过这样的事情。一个主要的提示是将数据放在一个未编制索引的表中,其中Oracle VARCHAR2列(如果有的话)映射到SQL / Server中的NVARCHAR,这避免了SSIS中的数据转换步骤。从登台表中,您可以将它们放入正确的目标表中,然后删除登台表。这就是我做的方式。

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

您可以在SQL / Server中创建一个链接服务器,您可以从中将数据简单地吸入数据库。我用这种方法得到的结果好坏参半。它确实有效,但我发现它有时会有点不稳定。这可能与我们的基础设施有关,而不是Oracle链接服务器的固有弱点。如果遇到问题,您可以逻辑地对数据进行分区并将其拉入SQL / Server中。链接服务器非常优雅,但如果你可以让它们工作。您可以使用OPENQUERY()从Oracle检索数据,例如

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

您还可以将数据导出到平面(或CSV)文件并导入,再次SSIS可以执行此操作,但这并不容易。这有点容易格式化和导出/导入差异

答案 1 :(得分:0)

澄清Ciarán答案的最后一句话。 我曾经这样做过:

  • 使用sqlplus和SPOOL(sample);
  • 从Oracle表导出数据
  • 使用bcp实用程序快速加载到MS SQL(documentation)。