Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Talend中动态猜测Mysqlinput中的模式_Mysql_Schema_Talend_Jobs - Fatal编程技术网

如何在Talend中动态猜测Mysqlinput中的模式

如何在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作业模式也应该更改,因为我使用的是内置类型 是否有办法在作业运行期间强

我构建了一个将数据从mysql数据库表复制到mysql数据库表的作业。 表列是相同的,只是有时可以在表a db中添加一个新列

我想检索从a到b的所有列,但只检索表b中存在的列。我能够输入表b中存在的查询特定的select colume语句,如:

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是否位于不同的数据库中?如果它们位于同一个数据库中,我可以建议一种解决方案。它们是不同的