Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 将大量数据从Oracle复制到SQL Server的最快方法_Sql Server_Oracle - Fatal编程技术网

Sql server 将大量数据从Oracle复制到SQL Server的最快方法

Sql server 将大量数据从Oracle复制到SQL Server的最快方法,sql-server,oracle,Sql Server,Oracle,我需要将大量数据从Oracle数据库复制到SQL Server数据库。最快的方法是什么 我看到的数据在Oracle中需要60-70千兆的存储空间。我使用的方法没有特别的限制。我可以使用SQL Server Management Studio,或SQL Serer导入/导出程序,或.NET应用程序,或Oracle中的开发人员界面,或第三方工具,或--。我只需要尽快移动数据 数据是按地理位置组织的。每个状态的数据都会单独更新到Oracle数据库中,并且可以自行移动到SQL Server。因此,整个数

我需要将大量数据从Oracle数据库复制到SQL Server数据库。最快的方法是什么

我看到的数据在Oracle中需要60-70千兆的存储空间。我使用的方法没有特别的限制。我可以使用SQL Server Management Studio,或SQL Serer导入/导出程序,或.NET应用程序,或Oracle中的开发人员界面,或第三方工具,或--。我只需要尽快移动数据

数据是按地理位置组织的。每个状态的数据都会单独更新到Oracle数据库中,并且可以自行移动到SQL Server。因此,整个数据量很少会同时移动

那么人们会有什么建议呢?

我曾经为此使用过微软的“微软SQL Server迁移助手(SSMA)”,它确实做到了它承诺要做的事情:

(文件)

(下载)

然而,在我的例子中,它并没有我预期的80 GB Oracle DB(4小时或更多)的速度快,之后我不得不做一些手动步骤,但应用程序无论如何都是在地狱中开发的(一个表有90+列和100+索引)。

我实际上使用了“Microsoft SQL Server迁移助手(SSMA)”微软一次就这样做了,它实际上做到了它承诺要做的事情:

(文件)

(下载)


然而,在我的例子中,它并没有我预期的80 GB Oracle DB(4小时左右)的速度快,我不得不在之后执行一些手动步骤,但应用程序无论如何都是在地狱中开发的(一个表有90+列和100+索引).

将大量数据插入SQL Server的最快方法是使用SQL Server批量插入。常见的批量插入技术有:

  • T-SQL批量插入语句
  • BCP命令行实用程序
  • 具有快速加载选项的SSIS包OLE DB目标
  • 来自非托管代码的ODBC bcp API
  • 从非托管代码加载OLE DB IRowsetFastLoad
  • 来自.NET应用程序的SqlBulkCopy
T-SQL
BULK INSERT
和命令行
BCP
实用程序使用平面文件源,这意味着您需要首先将数据导出到文件。其他方法可以直接使用Oracle
SELECT
查询结果,而不需要中间文件,只要不考虑源/目标网络带宽和延迟,中间文件的总体性能应该会更好

使用SSI,通常会为每个要使用OLE DB源(Oracle)和OLE DB目标(SQL Server)复制的表创建一个数据流任务。根据SSIS版本的不同,可以单独下载Oracle源提供程序。最新的是最新的。SSMS导入向导可用于为任务生成SSIS包,该包可立即运行和/或根据需要保存和自定义。例如,您可以为要复制的状态创建一个包变量,并在刷新数据之前在源
SELECT
查询和目标
DELETE
查询中使用该变量。这将允许在任何状态下重用相同的包

OLE DB IRowSetFastLoad或ODBC bcp调用的性能应该与SSI类似,但您可以通过大量关注细节来获得一些额外的性能增益。但是,使用这些API并不重要,除非您已经熟悉C++和API。 SqlBulkCopy速度很快(通常每分钟有数百万行),对于大多数应用程序来说,它的性能足够好,而不需要非托管代码的额外复杂性。最好对源
选择
查询使用,而不是.NET代码中的ODBC或OLE DB提供程序


我的建议是,您不仅要考虑性能,还要考虑现有的技巧。

< P>将大量数据插入SQLServer的最快方法是使用SQLServer批量插入。常见的批量插入技术有:

  • T-SQL批量插入语句
  • BCP命令行实用程序
  • 具有快速加载选项的SSIS包OLE DB目标
  • 来自非托管代码的ODBC bcp API
  • 从非托管代码加载OLE DB IRowsetFastLoad
  • 来自.NET应用程序的SqlBulkCopy
T-SQL
BULK INSERT
和命令行
BCP
实用程序使用平面文件源,这意味着您需要首先将数据导出到文件。其他方法可以直接使用Oracle
SELECT
查询结果,而不需要中间文件,只要不考虑源/目标网络带宽和延迟,中间文件的总体性能应该会更好

使用SSI,通常会为每个要使用OLE DB源(Oracle)和OLE DB目标(SQL Server)复制的表创建一个数据流任务。根据SSIS版本的不同,可以单独下载Oracle源提供程序。最新的是最新的。SSMS导入向导可用于为任务生成SSIS包,该包可立即运行和/或根据需要保存和自定义。例如,您可以为要复制的状态创建一个包变量,并在刷新数据之前在源
SELECT
查询和目标
DELETE
查询中使用该变量。这将允许在任何状态下重用相同的包

OLE DB IRowSetFastLoad或ODBC bcp调用的性能应该与SSI类似,但您可以通过大量关注细节来获得一些额外的性能增益。但是,使用这些API并不重要,除非您已经熟悉C++和API。 SqlBulkCopy速度很快(通常每分钟有数百万行),对于大多数应用程序来说,它的性能足够好,而不需要非托管代码的额外复杂性。最好对源
选择
查询使用,而不是ODBC或OLE DB