我需要复制表和数据(大约5年的数据,6200个表)存储在sqlserver中,我正在使用datastage和odbc连接来连接和datastage自动创建带有数据的表,但它需要2-3个小时每个表,因为表非常大(0.5gig,300+columns和大约400k行)。
我怎么才能做到这一点呢?在这个速度下,我每天只能复制5张表,但在30天内,我需要移动这6000张表。
发布于 2010-04-28 09:25:36
每个0.5 Gb的6000个表大约是3TB。加上索引。我可能不会选择ODBC连接,但问题是瓶颈在哪里。
您有一个来自SQL Server的提取阶段。您有从SQL Server机器到Oracle机器的传输。你拿到货了。
如果网络是限制功能,那么您最好解压到一个文件,压缩它,传输压缩的文件,解压缩,然后加载它。Oracle中的外部表是从平面文件(带分隔符或固定长度)加载数据的最快方法,最好分布在多个物理磁盘上,以分散负载,并且不进行日志记录。
除非发生了重大的转换,否则我会忘记数据存储。任何不是提取或加载的东西都是多余的,需要最小化。
发布于 2010-04-28 08:40:49
你能并行地同时传输不同的表吗?
我们定期将大型平面文件传输到SQL Server中,我会并行运行它们-它使用网络和SQL Server上更多的带宽,但它们一起完成的速度比串行更快。
发布于 2010-04-28 18:46:19
您是否考虑过编写表模式的脚本并在Oracle中创建它们,然后使用SSIS将数据批量复制到Oracle中?另一种选择是使用链接服务器和一系列"Select * INTO xxx“语句,这些语句将复制模式和数据(减去关键条件),但我认为6000个表的性能将相当糟糕。
https://stackoverflow.com/questions/2726061
复制相似问题