gpt4 book ai didi

mysql - Talend 可以为 MySQL 输出使用动态表名吗?

转载 作者:可可西里 更新时间:2023-11-01 08:03:51 25 4
gpt4 key购买 nike

(用于数据集成的 Talend 操作系统)

是否可以使用动态表名?我已经研究了用户手册中的所有资源,虽然它们似乎都没有明确排除这种可能性,但我似乎无法让它发挥作用。

场景

假设您有一个包含 1,000,000 个名字的庞大列表 - Dave Smith、Dave Jones、Dave Bloggs 等。这些都存储在一个表中。

您需要将这些拆分成反射(reflect)名字的表,这样您就会有一个包含表名的数据库,例如“Andy”、“Adrian”、“Adam”等。

我在哪里

我能毫无问题地做的是将完整数据集批量导出到表中。我还可以使用 tMysqlRow 遍历该字段来创建我的个人表(这本身要快得多)。

然后我尝试选择数据并将其吐出到各自的字段中,但遇到了这些问题:

  • tMySqlRow 可以与变量一起使用,因此我可以将数据插入到相关的表中,但是它太慢了以至于是多余的。它以大约 2000 行/秒的速度运行,大约有 2000 万行要处理。
  • tMySqlOutput 更快,并且可以很好地完成此任务,但需要明确定义表名。使用上下文变量作为表名是行不通的(读作“Null”)。

建议查看ETL组件,但他们的定义明确表明表名必须用引号引起来。

Talend 提供如此多的上下文变量使用似乎真的很奇怪,但似乎不允许您动态地将一个数据集拆分为多个表。是产品限制,还是我的限制?

提前致谢。

编辑 - 添加屏幕截图

context variable available in selection上下文打印到此屏幕截图中的窗口('AB' 是使用的测试上下文值)以表明该值在“表”字段中声明之前是相关的,但随后返回空值

context variable prints to console okay, but is ignored as the table value

最佳答案

补充一下,我已经设法让它工作了。

enter image description here

  1. tMysqlInput_1information_schema 中检索表名在子作业中创建的
  2. 然后将这些传递给 tHashOutput_1

  3. tHashInput_1 然后将这些提供给 tFlowtoIterate 组件, 它遍历我的输入作业。

  4. 然后我可以通过调用 (String)globalMap.get("row6.TABLE_NAME")) 访问每个表名,因为我的 tHash 架构有一个列,我将其命名为“Table_Name” '.

我执行了一些操作,借此我在过滤器中使用 Table_Name 仅提取与表名匹配的字段,然后将其传递给我的 yMysqlOutput 组件,如下所示:

enter image description here

我已经测试过了,一切正常。希望这可以为将来解决这个问题的人节省很多时间(或者对于比我更擅长 Talend 的人来说,节省 5 分钟!)。

谢谢!

关于mysql - Talend 可以为 MySQL 输出使用动态表名吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39617443/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com