我使用的是SqlServer 2008R2,我需要用follow结构非常快地加载9亿条记录。
varchar(20)
varchar(10)
varchar(50)
varchar(15)
varchar(20)
varchar(10)
varchar(4)
varchar(3)
varchar(10)
日期时间
日期时间
日期时间
日期时间
十进制(19,2)
十进制(19,2)
十进制(19,2)
十进制(19,2)
十进制(19,2)
十进制(19,2)
十进制(19,2)
十进制(19,2)
十进制(19,2)
(我有各种格式,有些数据多达100列-总共需要加载221 In的数据)
问题是数据来自旧的OS390,如果日期是null,他们就会在文本文件中发送它,比如99999999。
将此数据转换为空的最佳方法是什么?在Oracle中,您可以将逻辑放在格式中,BCP可以做到这一点吗?或者,使用SSIS同时加载和转换是实现这一点的最快方法?还是用扳机什么的?
作为文本加载,然后在数据库中转换,我认为由于数据量的原因,我不认为是一个选择。
发布于 2013-03-26 23:33:36
您始终可以使用.NET客户端应用程序以任何您想要的方式转换数据。我只是通过一个简单的设置以430 at /小时的速度加载数据:
我刚刚启动了8个.NET线程,并让它们使用SqlBulkCopy以10m行批的方式流式传输数据。每个线程插入到它自己的堆表中。这是一种最简单的设置。它在我的4*2核i7桌面上运行,SQL Server在同一台机器上。SQL的CPU使用率约为50%,我的应用程序的CPU使用率为50%。因此,通过使用两台机器和一个快速网络,吞吐量可以很容易地翻一番。
这允许您将最终数据直接插入到目标表中(理想情况下,目标表是分区的,因此可以加载到单独的分区中)。
https://stackoverflow.com/questions/15638687
复制相似问题