0

这是场景

我有一个用于 csv 文件的临时表,这是我的源文件我正在将其加载到物理临时表中我将在包的后面部分对此临时表数据进行转换我需要新数据(因为它来自源)

我应该在临时表中进行转换还是应该再次使用数据流任务来重新加载临时表

数据不多 [微笑] 只是不到一百万而已

4

1 回答 1

0

有一个标准模式。

  1. 提取数据(从 CSV 到您的临时区域)
  2. 转换数据(清理、转换、格式化、加入其他内容、使其与新系统兼容)
  3. 加载数据(更新/插入/删除到您的活动表)

这就是 ETL 的首字母缩写词的来源 - http://en.wikipedia.org/wiki/Extract,_transform,_load

您拥有的主要优势是,在第 1 点您只有 1 个线程/用户加载数据,因此可以快速提取数据,然后在第 2 阶段您正在操作数据而不会导致其他表上的任何锁定。最后,一旦数据准备就绪,您就可以以最快的方式将其加载到您的实时表中。

您最关心的两个(通常是相互竞争的)问题是简单性和速度。简单性很棒,因为它涉及的代码更少,需要的调试更少,并且让您更加确信您的数据是干净的。但是,有时您必须为了速度而牺牲简单性。

在您的情况下,由于您只加载了几百万行,我建议您每次都重新加载临时表,以便每次加载都使用相同的 ETL 过程。这使您的 ETL 机制易于编码、维护和解释。

仅供参考 - 如果您使用的是 SQL Server,请查看 SSIS。

于 2012-09-01T14:38:06.303 回答