在日期列上拆分Mysql表,并将结果存储在具有动态名称的不同表中

在日期列上拆分Mysql表,并将结果存储在具有动态名称的不同表中,mysql,talend,Mysql,Talend,我的工作看起来像是我试图读取Mysql表的第一个图像, 并根据FROM_DATE字段拆分表。作业中的步骤如下所示: 使用tMap创建列StringFromDate->TalendDate.formatDateyyyy MM dd,第1行。起始日期 将tMapOutput连接到tFlowToIterate 将TFlowtoItem连接到tFixedFlowInput。tFixedFlowInput组件配置如下图所示 将tFixedFlowInput连接到tLogRow 将tLogRow连接到tMy

我的工作看起来像是我试图读取Mysql表的第一个图像, 并根据FROM_DATE字段拆分表。作业中的步骤如下所示:

使用tMap创建列StringFromDate->TalendDate.formatDateyyyy MM dd,第1行。起始日期

将tMapOutput连接到tFlowToIterate

将TFlowtoItem连接到tFixedFlowInput。tFixedFlowInput组件配置如下图所示

将tFixedFlowInput连接到tLogRow

将tLogRow连接到tMysqlOutput。TMYSQLOUT组件设置如第三幅图所示

问题是这些表只生成了一行数据。当我尝试在csv文件中收集数据时,此设置与tFileOutputDelimited中的append选项配合使用效果良好

请立即提供帮助


这个问题是由TMYSQLOUT设置drop table if exists和create引起的,它可以在每次迭代中有效地重新创建表。因此,表中最后的一行是与上一次迭代相对应的一行。 如果不存在,请尝试使用“创建表”设置。
此外,根据后续问题,您需要在tMysqlOutput之后添加OnComponentOk-tMysqlCommit取消选中close connection以提交插入。

问题是由tMysqlOutput设置drop table if exists和create引起的,该设置会在每次迭代中有效地重新创建表。因此,表中最后的一行是与上一次迭代相对应的一行。 如果不存在,请尝试使用“创建表”设置。
此外,根据您的后续问题,您需要在tMysqlOutput之后添加OnComponentOk-tMysqlCommit取消选中close connection以提交插入。

我尝试使用create table if not exists和Insert as对数据的操作。这是另一个问题。正在创建一些空表,并且所有表中的行总数小于拆分的表。您的tMysqlConnection高级设置是否启用了自动提交?如果没有,那么您应该在tmysqloutput之后添加OnComponentOk-tMysqlCommit。这两种解决方案都解决了空表的问题,我还必须取消选中Close Connection tMysqlCommit,但是所有表的总行数比实际行数多1行。我不明白为什么还有一排。我在tMySqlInput中使用SELECT*FROM facility_MORRONAL ORDER BY RAND LIMIT 20从我的表中生成20行,但拆分表中的行总数为21。我不知道这是怎么回事。。你能看一下数据,看看要添加哪一行吗?可以在源表上选择日期,按日期从表组中计算*以获得每个结果表中的预期行数,并将其与每个表中的实际行数进行比较。我的实际表有200万行,因此要设计作业,我每次生成20个随机行来检查输出,它会生成一个额外的行。我尝试使用CREATETABLE if not exists和Insert作为数据操作。这是另一个问题。正在创建一些空表,并且所有表中的行总数小于拆分的表。您的tMysqlConnection高级设置是否启用了自动提交?如果没有,那么您应该在tmysqloutput之后添加OnComponentOk-tMysqlCommit。这两种解决方案都解决了空表的问题,我还必须取消选中Close Connection tMysqlCommit,但是所有表的总行数比实际行数多1行。我不明白为什么还有一排。我在tMySqlInput中使用SELECT*FROM facility_MORRONAL ORDER BY RAND LIMIT 20从我的表中生成20行,但拆分表中的行总数为21。我不知道这是怎么回事。。你能看一下数据,看看要添加哪一行吗?可以在源表上选择日期,按日期从表组中计算*以获得每个结果表中的预期行数,并将其与每个表中的实际行数进行比较。我的实际表有200万行,因此要设计作业,我每次生成20个随机行来检查输出,它会生成一个额外的行。