2013-02-05 84 views
2

我正在开发一个项目,我需要使用ETL过程将数据加载到数据仓库中。我有csv,非结构化和平面文件格式的数据。我正在考虑使用shell脚本来执行ETL过程。我对bash shell和KornShell(ksh)知之甚少,但在ETL过程中我很新。所以我的问题是什么是ETL过程更好的选择。我是否应该使用Bash Shell或KornShell?用于ETL过程的KornShell或Bash Shell?

来自用户对ETL过程和shell脚本经验的回答非常感谢。

提前致谢。

+2

我不会为ETL使用任何一个shell,我会使用Perl,它为数据转换工作提供了更多的功能。如果你必须使用一个shell,你可能会发现bash功能更强大,并且有更多的帮助者。 – paxdiablo

+3

ETL脚本或程序没有什么神奇之处,它们就像任何其他应用程序一样:有一些常用的实践和工具可用,您可以使用它们或从中获取灵感,但最终必须自己编写代码才能实现要求。所以我只能建议你根据组织中的经验,技能和现有编码标准进行一些研究并作出决定。 10个不同的人会就如何实施ETL解决方案给你10个不同的答案。 – Pondlife

回答

5

通常,我的ETL进程使用SQL语句来执行数据库内转换,所以它们确实是“ELT”进程。 shell只是用来移动文件,执行数据加载提取并执行SQL语句的工具。如果你的数据仓库是一个功能强大的系统,那么通常是进行转换工作的最佳位置,除非你设置了一个在EDW以外的系统进行数据转换。

我所描述的这种ELT过程的shell的选择实际上就是维护过程之一。你走后谁会支持这个?公司是否有很多知道bash的人,但只有一个知道ksh的人?或者它是99%的.NET商店?然后我建议在小C#控制台应用程序中编写ETL。当您不使用真正的“ETL”工具时,选择用于执行ETL的语言应该专注于这些因素,而不是“最佳”语言。

4

Korn稍微更轻便。 Bash更强大。 “Bourne shell”是一个不错的共同点。

所有的事情都是平等的,我会推荐“bash”。特别是如果你的平台是Linux。

恕我直言..

PS:

命名为“打击”的全称是“伯恩再次壳牌”,从原来的“谍影重重”壳其遗产一语双关。 Bourne脚本是bash兼容的,但反之亦然。

+0

但是我需要在ETL过程的上下文中回答.. –

+3

我*在ETL过程的上下文中给了你一个答案。你可以用你喜欢的任何工具来操纵你的.csv。你可以使用Bourne,Korn或Bash。或者出去购买商业工具。或者用VB.Net或Perl写一些东西。完全取决于你!在这里寻找更多的信息:[etltools.com供应商调查](https://www.etltool.com/order.php) - 它只有€725 :)。 – paulsm4