我正在做一个项目,我需要使用 ETL 过程将数据加载到数据仓库中。我有 csv、非结构化和平面文件格式的数据。我正在考虑使用 shell 脚本来执行 ETL 过程。我对 bash shell 和 KornShell (ksh) 知之甚少,但我在 ETL 过程中非常陌生。所以我的问题是 ETL 过程的更好选择是什么。我应该使用 Bash Shell 还是 KornShell?
非常感谢使用 ETL 过程和 shell 脚本的用户的回答。
预先感谢。
我正在做一个项目,我需要使用 ETL 过程将数据加载到数据仓库中。我有 csv、非结构化和平面文件格式的数据。我正在考虑使用 shell 脚本来执行 ETL 过程。我对 bash shell 和 KornShell (ksh) 知之甚少,但我在 ETL 过程中非常陌生。所以我的问题是 ETL 过程的更好选择是什么。我应该使用 Bash Shell 还是 KornShell?
非常感谢使用 ETL 过程和 shell 脚本的用户的回答。
预先感谢。
通常,我的 ETL 流程使用 SQL 语句进行数据库内转换,因此它们实际上是“ELT”流程。shell 只是用作移动文件、执行数据加载和提取以及执行 SQL 语句的工具。如果您的 DW 位于一个足够强大的系统上,那么它通常是进行转换工作的最佳位置,除非您打算让一个系统位于 EDW 之外进行数据转换。
我所描述的这种 ELT 进程的 shell 选择实际上是一种维护。当你离开时,谁会支持这个?公司是否有很多人知道 bash,但只有一个人知道 KSH?还是 99% 是 .NET 商店?然后我建议在小的 C# 控制台应用程序中编写您的 ETL。当您不使用真正的“ETL”工具时,选择用于执行 ETL 的语言应该关注这些因素,而不是“最佳”语言。
Korn 更便携。Bash 更强大。“Bourne shell”是一个很好的最小公分母。
在所有条件相同的情况下,我建议使用“bash”。特别是如果您的平台是 Linux。
恕我直言 ..
PS:
“bash”这个名字代表“Bourne Again Shell”,这是对原始“Bourne”shell 遗产的双关语。Bourne 脚本与 bash 兼容,但反之则不然。