如何在Talend中动态猜测Mysqlinput中的模式
我构建了一个将数据从mysql数据库表复制到mysql数据库表的作业。 表列是相同的,只是有时可以在表a db中添加一个新列 我想检索从a到b的所有列,但只检索表b中存在的列。我能够输入表b中存在的查询特定的select colume语句,如:如何在Talend中动态猜测Mysqlinput中的模式,mysql,schema,talend,jobs,Mysql,Schema,Talend,Jobs,我构建了一个将数据从mysql数据库表复制到mysql数据库表的作业。 表列是相同的,只是有时可以在表a db中添加一个新列 我想检索从a到b的所有列,但只检索表b中存在的列。我能够输入表b中存在的查询特定的select colume语句,如: select coulmn1,column2,columns3... from table a 问题是,如果我在b中添加了一个与a匹配的新列,那么Mysqlinput中的talend作业模式也应该更改,因为我使用的是内置类型 是否有办法在作业运行期间强
select coulmn1,column2,columns3... from table a
问题是,如果我在b中添加了一个与a匹配的新列,那么Mysqlinput中的talend作业模式也应该更改,因为我使用的是内置类型
是否有办法在作业运行期间强制使用架构列?如果您使用的是Talend的订阅版本,则可以使用动态列类型。您可以为“Dynamic”类型的输入定义一个列,并将其映射到输出组件中相同类型的列。这将动态地从表a中获取列,并将它们映射到表b中的相同列。这是一个。
如果您使用的是Talend Open Studio,事情会变得有点棘手,因为Talend希望在设计时为需要定义的输入和输出组件提供一个列列表 这里有一个解决方案,我把工作围绕这个限制 其想法是列出表b中存在的表a的所有列。然后将其转换为逗号分隔的列列表,在我的示例中为
id、Theme、name
,并将其存储在全局变量COLUMN\u list
中。tMap的第二个输出构建了相同的列列表,但这一次在列之间添加了单引号(以便以后可以将它们用作CONCAT
函数的参数),然后在开头和结尾添加单引号,如:“”,id,“,”,Theme,“,”,name,“”
并将其存储在全局变量CONCAT\u LIST
中
在下一个主题中,我使用CONCAT
函数查询表a
,为其提供要连接的列列表CONCAT\u list
,从而检索单个列中的每个记录,如so'value1',value2',等等
最后,我对表b
执行INSERT
查询,指定全局变量COLUMN\u list
给出的列列表,以及要插入的值,作为CONCAT
函数(row6.values
产生的单个字符串)
此解决方案是通用的,如果用上下文变量替换表名,则可以使用它将数据从任何MySQL表复制到另一个表。如果使用Talend的订阅版本,则可以使用动态列类型。您可以为“Dynamic”类型的输入定义一个列,并将其映射到输出组件中相同类型的列。这将动态地从表a中获取列,并将它们映射到表b中的相同列。这是一个。
如果您使用的是Talend Open Studio,事情会变得有点棘手,因为Talend希望在设计时为需要定义的输入和输出组件提供一个列列表 这里有一个解决方案,我把工作围绕这个限制 其想法是列出表b中存在的表a的所有列。然后将其转换为逗号分隔的列列表,在我的示例中为
id、Theme、name
,并将其存储在全局变量COLUMN\u list
中。tMap的第二个输出构建了相同的列列表,但这一次在列之间添加了单引号(以便以后可以将它们用作CONCAT
函数的参数),然后在开头和结尾添加单引号,如:“”,id,“,”,Theme,“,”,name,“”
并将其存储在全局变量CONCAT\u LIST
中
在下一个主题中,我使用CONCAT
函数查询表a
,为其提供要连接的列列表CONCAT\u list
,从而检索单个列中的每个记录,如so'value1',value2',等等
最后,我对表b
执行INSERT
查询,指定全局变量COLUMN\u list
给出的列列表,以及要插入的值,作为CONCAT
函数(row6.values
产生的单个字符串)
此解决方案是通用的,如果用上下文变量替换表名,则可以使用它将数据从任何MySQL表复制到另一个表。我确实使用Talend Open Studio:(您的表是否经常更改结构?您的表a和表b是否位于不同的数据库中?如果它们位于同一个数据库中,我可以建议一种解决方案。它们是不同的我是否使用Talend Open Studio:(您的表是否经常改变结构?表a和表b是否位于不同的数据库中?如果它们位于同一个数据库中,我可以建议一种解决方案。它们是不同的