1

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

4

2 回答 2

1

好吧,假设您的意思是 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 也可以这样做,但不会那么容易。这有点容易出现格式化和导出/导入差异

于 2012-12-18T20:27:43.907 回答
0

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

  • 使用 sqlplus 和 SPOOL 从 Oracle 表中导出数据(示例);
  • 使用 bcp 实用程序快速加载到 MS SQL(文档)。
于 2012-12-19T11:18:19.733 回答