我想将 Oracle 数据库表中一列的内容复制到 SQL Server 数据库中的另一列中。我有超过 300 万行要转移。有没有解决这类问题的捷径。并非Oracle表中的所有内容都会被传输,因为Oracle表大约有400万行
2 回答
好吧,假设您的意思是 SQL/Server,我会使用 SQL Server Integration Services (SSIS),这很容易做到,而且我最近也做过类似的事情。一个主要技巧是将数据暂存到一个未索引的表中,OracleVARCHAR2
列(如果有的话)NVARCHAR
在 SQL/Server 中映射到该表中,这样可以避免 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 也可以这样做,但不会那么容易。这有点容易出现格式化和导出/导入差异