我想将Oracle数据库表中列的内容复制到SQL Server数据库的另一列中。我有超过300万行要转移。有没有解决这类问题的简短方法。并非所有Oracle表中的内容都将被传输,因为Oracle表有大约400万行
答案 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答案的最后一句话。 我曾经这样做过: