我想将Oracle数据库表中某列的内容复制到SQL Server数据库中的另一列中。我有300多万行要传输。有没有解决这类问题的捷径。不是Oracle表中的所有内容都会被传输,因为Oracle表大约有400万行
发布于 2012-12-19 04:27:44
好吧,假设您指的是SQL/ Server,我会使用SQL Server Integration Services (SSIS)这将是相当容易做到的,而且我最近也做过类似的事情。一个主要技巧是将数据存放在一个无索引表中,其中OracleSSIS列(如果有)映射到VARCHAR2中的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也可以做到这一点,但这并不容易。这很容易出现格式化和导出/导入差异
发布于 2012-12-19 19:18:20
以澄清Ciarán答案的最后一句话。我以前是这样做的:
使用sqlplus和SPOOL (sample);
https://stackoverflow.com/questions/13939424
复制相似问题