在我工作的公司,我们正在构建一个数据仓库应用程序,它将成为我们运行的大量查询的基于Web的前端。 [使用ASP.net]
其中一些查询将带来超过一百万条记录(到年底可能会有大约200万条记录) -
大多数将是数千等。
以这样一种方式构建应用程序的好方法是,您可以浏览到所需的查询,导出它并生成由所请求数据生成的CSV文件 -
我在考虑一个基于Web的界面,它调用BCP生成一个文件,并在创建报告时显示,以便可以下载,并在创建后的24小时内到期 -
任何想法?
SAS
答案 0 :(得分:1)
我在以前的生活中构建了这样的东西。本质上是一个C#命令行应用程序,它针对我们的报告服务器运行查询。
一些关键点:
他们花了多长时间,因为它在后台 - 当文件准备就绪时,它会显示在用户界面中,用户可以下载它。他们没有实时等待。
查询的效率如何 - 无论是因为上述问题,还是因为报告都与前一天相关。我们将它们从生产的报告副本中运行,而非生产,这通过日志传送保持延迟。
我们没有对文件设置任何过期,因为用户可以在星期五请求报告,而不希望在星期一之前查看报告。我们宁愿在磁盘上放置一个文件而不是再次运行报告(文件服务器磁盘空间相对便宜)。我们让他们在完成报告后删除报告,并且他们会自己这样做以防止用户界面混乱。
由于对数据的各种要求,我们使用C#和DataReader而不是批量导出方法。我们需要提供灵活性,包括或不包括列标题,引用数据与否,处理支持各种文化的千位分隔符和小数点,以应用不同的行结尾(\ r \ n,\ n,\ r \ n),不同扩展,Unicode /非Unicode文件格式和不同的分隔符(逗号,制表符,管道等)。对于不同的客户,甚至对于不同的报告,也有不同的要求 - 有些人希望在报告完成后立即发送电子邮件通知,其他人则希望将报告副本发送到某个FTP服务器等等。
您可能还有许多要求尚未考虑,但我希望这能为您提供一个开始。