【发布时间】:2014-11-13 15:42:00
【问题描述】:
我是勺子工具的新手,我正在提取一个表值以加载另一个具有相同属性的表。在 first table 中有一列包含 nchar 值,例如 'y' 和 'no' 代表(是和否)。
我的问题是 second table 有一列将这些值保存为 tinyint 像 'y' -> 1 和 'n' -> '0'
表1
- 是
- 是
- n
- n
- 是
表2
- 1
- 1
- 0
- 0
- 1
那么有没有一种简单的方法可以通过映射来替换这些值并更改它们的类型。我可以在下面的 sql 语句中完成这项工作
SELECT CASE <variable>
WHEN <value> THEN <returnvalue>
WHEN <othervalue> THEN <returnthis>
ELSE <returndefaultcase>
END
FROM <table>
如果只有 'y' 和 'n' 值,这个解决方案还可以,但是因为在很多表中都有很多值,例如 ('a'->2, 'b'->3, 'c' -> 4)现在对我来说有点头疼。 如果有人告诉我一个实用的方法,我将不胜感激。
【问题讨论】:
-
如何引入从数据库中读取的映射表,例如CSV 文件?
-
映射表到底是什么意思?是否类似于将所有等效值存储在第二个表中? @Marcus Rickert
-
没错!尽管这比 ETL 中的编码映射要多一些工作,但您可以将其视为一种投资,可以在以后节省您的时间。这取决于您的映射随着时间的推移发展的速度。
-
听起来合乎逻辑。我会记住这一点。谢谢@Marcus Rickert先生
标签: sql pentaho etl pentaho-spoon