2012-02-22 18 views
1

对不起,如果这是错误的地方,但我不确定什么Stack Exchange站点适合这些类型的问题。在SQL Server环境中构建来自许多其他表的平面文件

我有一个任务是建立一个直销的地址池。我必须:

  • 合并不同ADRESS名单
  • 正确的名称基于某些规则(所有这些已经在数据库)(例如,如果名称是像“约翰&玛丽·多伊”,我需要拆分的名字为“李四”和“玛丽·多伊”)
  • 删除重复记录
  • 通过名字与我们的客户数据库中加入
  • 查找客户号码和不会忽略
  • 加入与提供客户信息的几个表(年龄,性别,客户价值,他/她已经向我们购买了哪些产品, n最近联系过他/她)
  • 加入几张提供地区信息的表格(我们在该地区销售了多少产品,社会地域结构是什么,该地区的平均收入是多少)
  • 构建一个平表与所有这些信息,并使其可在同一个数据库(没有输入/输出从/到其它系统或平面文件)
  • 安排其每天晚上运行,

所以现在我正在考虑这是实现这一目标的最佳途径。我可以考虑以下替代方案。

  1. 只写一个大的SQL批处理与工会,联接和选择INTOS
    +简单
    +灵活
    - 难读
    - 很难维持
    - 慢的时候,我总是创建中间表步骤之间

  2. SQL Server集成服务
    +易于阅读和维护
    +良好的错误处理
    +个人文档
    +视觉
    - 我需要学习它
    - 不知道这是否是足够的灵活性,当涉及到窗口函数(排名,行号等)
    - 不知道这是否会比SQL
    更快或更慢 - 据我所知没有办法来从数据流(以防万一)

  3. SQL Server分析服务SQL
    - 我甚至不知道它有什么不同SSIS

  4. 其他一些方法??

感谢

+1

SSAS与ETL无关;它是一个OLAP工具。 – 2012-02-22 09:42:06

回答

1

SSIS的名字说是从许多不同来源的数据整合/转化有用。如果你在SQL Server上做所有的事情 - 使用存储过程。这应该足以满足您的需求。临时表格在这里非常有用。

在另一方面...

SSIS是非常强大的工具,因为所有的数据流的工作是在内存中完成的,所以它是快,但你不必担心你的内存消耗。这取决于数据量,但您还需要避免在这里进行任何异步操作(分组,排序),因为它们可以轻松填满您的内存。如果数据流中会有大量的转换,更新和计算等,SSIS可能会更快。

但是...

您在这里有第三个选项。结合这两个使用“数据流”和“执行SQL任务”组件。

相关问题