选择一个聪明的解决方案:SQL Server或批量数据的文件处理?

时间:2011-09-29 15:22:20

标签: sql-server sql-server-2008

我们有一些测试生成的文件,每个文件有近60,000行数据。要求是借助这些文件中存在的数据计算参数数量。可以有两种处理数据的方法:

  1. 逐行读取每个文件并进行处理以获取所需参数
  2. 将文件数据批量复制到数据库表中,并借助存储过程中的聚合函数计算所需参数。
  3. 我试图找出与这两种方法相关的开销。由于数据库是为了处理这种情况,我担心数据库变大时可能会出现问题的开销。

    它是否会影响表中的检索率,从而使计算速度变慢?因此,考虑到数据库大小,文件处理是一个更好的解决方案吗?数据库分区应该解决大型数据库的问题吗?

3 个答案:

答案 0 :(得分:1)

您是否考虑过使用map-reduce(例如Hadoop下可能使用HBase)来执行这些任务?如果您正在寻找具有大数据量的高吞吐量,这是一种非常可扩展的方法。当然,并非所有问题都可以使用这种范例有效解决,我不知道你的计算细节。

答案 1 :(得分:0)

如果正确设置索引,则不会遇到性能问题。此外,没有什么可以阻止您将文件加载到表中并运行计算,然后将数据移动到存档表中或完全删除它。

答案 2 :(得分:0)

您可以直接从SQL

运行文本文件
SELECT * FROM   OPENROWSET('MSDASQL',  
   'Driver={Microsoft Text Driver (*.txt; *.csv)};DefaultDir=C:\;', 
   'SELECT * FROM [text.txt];')
  • 需要启用分布式查询才能运行它。

或者正如您所提到的,您可以将数据数据加载到表中(使用SSIS,BCP,上面的查询...)。你没有提到数据库会变大是什么意思。表格的60k行并不是那么多(意味着它会表现良好)。