mysql - 提取分隔符之间的字符串并填充到列中
问题描述
我有一个包含以下数据的源表:
columndata list
abc Paul;Michael;Benjamin;Latif
def High;Medium;Low;NULL
ghi Yes;No;Yes;No
我想在目标表中获得输出(列已定义),如下所示:
abc def ghi (column names)
Paul High Yes
Michael Medium No
Benjamin Low Yes
Latif NULL No
有什么简单的方法可以提取分隔数据并加载到目标表中的相应列中谢谢!
解决方案
您可以通过使用tNormalize
和来实现这一点tPivotToColumnsDelimited
。
tNormalize
将列表分解为单个元素:
选择要规范化的列(值列表)及其分隔符。该组件的输出如下所示:
|=--+-------=|
|col|values |
|=--+-------=|
|abc|Paul |
|abc|Michael |
|abc|Benjamin|
|abc|Latif |
|def|High |
|def|Medium |
|def|Low |
|def|NULL |
|ghi|Yes |
|ghi|No |
|ghi|Yes |
|ghi|No |
'---+--------'
接下来,在 tMap 中,为每个字段分配一个位置,以便构造目标行(我们需要知道第一行在 abc 列中包含“Paul”,在 def 列中包含“High”,在 ghi 列中包含“Yes”..等)我使用这个序列:
Numeric.sequence("seq_" + row4.col, 1, 1)
这将重置每个新列的序列。
最后,tPivotToColumnsDelimited
将透视数据:
然后读取生成的文件tPivotToColumnsDelimited
并将其加载到目标表中。
推荐阅读
- r - 如何将函数应用于许多 ML 模型并保存它们的输出?
- c - 如何将 Windows 消息从一个线程传递到另一个线程?
- python - Kivy 应用程序在运行时抛出 context_intructions.so 错误
- java - 如何在我的演示代码中访问以下方法“addPoints()”和“getScores()”
- laravel - Laravel 中实现的 SQL 连接和查询在哪里?
- java - Java比较对象列表以查找重复项并将它们放入新列表中
- ffmpeg - 是否可以对具有确切长度(到毫秒)的音频流进行编码?
- swift - 打开基于 NSDocument 的应用程序会加载两个窗口
- mongodb - 有没有办法使用 Docker Container IPs 变量?
- javascript - 如何在 PHP 中调用 JavaScript 函数?