我需要复制存储在sqlserver中的表和数据(大约5年的数据,6200个表),我使用datastage和odbc连接来连接和datstage自动创建带有数据的表,但是它每个需要2-3个小时表格非常大(0.5 gig,300 +列和大约400k行)。
我如何以这个速度达到这个目标,我每天只能复制5张桌子,但是在30天内我需要移动这6000张桌子。
答案 0 :(得分:6)
您有来自SQL Server的提取阶段。您可以从SQL Server框传输到Oracle框。你有负担。
如果网络是限制功能,您可能最好提取到文件,压缩文件,传输压缩文件,解压缩,然后加载它。 Oracle中的外部表是从平面文件(分隔或固定长度)加载数据的最快方法,最好是分布在多个物理磁盘上以分散负载而无需记录。
除非发生重大转变,否则我会忘记数据流。任何未提取或加载的东西都是过量的,以便最小化。
答案 1 :(得分:2)
您可以同时并行传输单独的表吗?
我们经常将大型平面文件传输到SQL Server,并且我并行运行它们 - 它在网络和SQL Server上使用更多带宽,但它们在一起完成的速度比在系列中更快。
答案 2 :(得分:2)
您是否考虑过编写表模式并在Oracle中创建它们然后使用SSIS将数据批量复制到Oracle中?另一种选择是使用链接服务器和一系列“Select * INTO xxx”语句,这些语句可以复制模式和数据(减去键约束),但我认为6000个表的性能会非常可怜。