Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.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 将6000个表和数据从sqlserver复制到oracle==>;最快的方法?_Sql Server_Oracle_Datastage - Fatal编程技术网

Sql server 将6000个表和数据从sqlserver复制到oracle==>;最快的方法?

Sql server 将6000个表和数据从sqlserver复制到oracle==>;最快的方法?,sql-server,oracle,datastage,Sql Server,Oracle,Datastage,我需要复制存储在sqlserver中的表和数据(大约5年的数据,6200个表),我使用datastage和odbc连接来连接,datstage自动创建带有数据的表,但是每个表需要2-3个小时,因为表非常大(0.5千兆,300+列,约400k行) 我如何才能做到这一点?以这种速度,我每天只能复制5张表,但在30天内,我需要移动这6000张表。您能同时并行传输单独的表吗 我们定期将大型平面文件传输到SQL Server,我并行运行它们—它在网络和SQL Server上使用了更多的带宽,但它们一起完成

我需要复制存储在sqlserver中的表和数据(大约5年的数据,6200个表),我使用datastage和odbc连接来连接,datstage自动创建带有数据的表,但是每个表需要2-3个小时,因为表非常大(0.5千兆,300+列,约400k行)


我如何才能做到这一点?以这种速度,我每天只能复制5张表,但在30天内,我需要移动这6000张表。

您能同时并行传输单独的表吗


我们定期将大型平面文件传输到SQL Server,我并行运行它们—它在网络和SQL Server上使用了更多的带宽,但它们一起完成的速度比串联完成的要快。

6000个0.5 Gb的表大约为3 TB。加上索引。 我可能不会选择ODBC连接,但问题是瓶颈在哪里

您有一个从SQL Server提取的阶段。您拥有从SQL Server box到Oracle box的传输。你有负担

如果网络是限制能力的因素,那么您最好先提取到文件,压缩它,传输压缩文件,解压缩它,然后加载它。Oracle中的外部表是从平面文件(分隔或固定长度)加载数据的最快方式,最好分散在多个物理磁盘上,以分散负载,而无需记录


除非发生重大转变,否则我会忘记datastage。任何不提取或加载的内容都要尽量减少。

您是否考虑过编写表架构的脚本并在Oracle中创建它们,然后使用SSI将数据批量复制到Oracle中?另一种选择是使用链接服务器和一系列“Select*INTO xxx”语句,这些语句将复制模式和数据(减去关键常量),但我认为6000个表的性能将非常可怜。

这是大量数据:我使用datastage的唯一原因是在加载数据之前不必创建表结构。您认为从sqlserver表中提取数据并将其加载到oracle(创建表结构后)会更快吗?瓶颈是我需要每天至少复制30个表,但现在加载一个400k、300column表需要3个小时。对于这种表格,通常需要多长时间,是否有其他工具可以做到这一点并使其自动化?@nazer555-创建表格应该相对轻松。我已经自动生成了表创建脚本,以便从SQL Server表中创建Teradata表,虽然在编写代码以生成不同方言/索引功能的适当表语法方面还有一些前期工作,如果使用datastage会影响性能,那么自动生成表架构通常没有那么大的优势。我们可以自动将数据提取到文件并加载到oracle表中吗?是否有任何工具可以让我直接执行“插入到(oracle表)select*from(sqlservertable)”操作,这将至少使过程自动化,因为现在我正在自动运行DS作业。@nazer555始终有链接服务器,但我不会以这种方式进行大型插入。您能将SQL server中的数据bcp到平面文件中,然后使用SQL*Loader加载它吗?这是我使用SQL server对Teradata所做的操作-bcp out,fastload inid在10分钟内大约有400万行。我们可以自动化将数据提取到平面文件的过程吗?我确信可以使用shell脚本自动化sqlloader,但这会影响整个过程,因为提取6000个平面文件会很繁琐。是的,我可以做到这一点,但我可能可以做2-3个单独的工作,因为settin gup datastage作业提供元数据和odbc连接对于每个作业都需要一些时间。是否有其他工具可以帮助我完成这项工作?我将对SSIS批量复制和链接器服务器进行研究,这样至少我可以自动执行脚本,因为我现在正在手动运行作业。您知道关于上述内容的任何好文章/命令吗?