【问题标题】:Dynamic loading not working in talend动态加载在 talend 中不起作用
【发布时间】:2018-01-22 12:10:37
【问题描述】:

无法加载多个表,出现错误:

组件 tMysqlInput_1 (MYSQL_DynamicLoading) 中的异常 java.sql.SQLException:第 3 列中时间戳“GUINESS”的格式错误

一张桌子工作正常。基本上在第一次迭代之后,第二个表试图使用模式 的第一张桌子。请帮忙,如何编辑组件来制作它 正确的。试图从 sakila DB mysql 加载演员和国家表到 同一服务器上的另一个数据库。上图是成功的一张桌子 动态加载。

【问题讨论】:

  • 您的表没有相同的结构,我猜您为 tMysqlInput 定义的结构对应于第一个表,这就是它起作用的原因。然后它尝试使用相同的模式加载第二个表,这不可能工作。
  • 是的,这是正确的,但它应该如何工作。找不到任何解决方法。我们如何在不使用第一个表模式的情况下传递所有表。
  • 您使用哪个版本的 Talend?打开 Studio 还是订阅?动态架构仅在订阅版本中可用。

标签: talend talend-mdm


【解决方案1】:

如果输出模式不同,则不应使用 tMysqlInput。对于这种情况,没有办法绕过 tJavaRow 和自定义代码。但是,我无法猜测 tMap 中会发生什么,因此您应该提供更多关于您想要实现的目标的详细信息。

【讨论】:

  • 我想将两个(多个表)从一个数据库加载到另一个具有相同结构但动态的数据库。简而言之,我想从文件中迭代每个表并将它们加载到目标中
  • 所以源数据库中的两个表具有不同的结构?! .这两个数据库都位于同一个 mysql 实例/服务器中吗?
  • 目前,这两个数据库都位于同一个mysql实例/服务器中。但实际情况是不同的服务器。仍然没有发生相同的服务器加载。 Server(local)-DB(sakila)-Table(actor&country) 加载到(Server(local)-DB(db_central)-Table(actor&country)
  • 您可能已经知道:动态流模式仅在 Talend Enterprise 中可用。因为您的表格 actor&country 没有相同的结构,所以您不能在 TOS MDM 中使用相同的流程。对于您的情况,我将使用 tSSH 或 tSystem 在源服务器上执行 mysqldump,而不是使用 tFileWhatever 读取转储并使用 tMysqlRow 在目标服务器上执行。 ;)
【解决方案2】:

如果您只需将数据从一个表加载到另一个表而不进行任何转换,您可以执行以下操作之一:

  1. 如果您的表位于同一服务器上的 2 个不同的数据库中,您可以使用 tMysqlRow 并执行查询“INSERT INTO catalog.table SELECT * from catalog2.table2..”。如果需要,您可以在 SQL 中进行一些简单的转换。
  2. 如果您的表位于不同的服务器中,请查看我为类似问题建议的通用解决方案here。根据您的用例,它可能需要进行一些调整,但总体思路是在表不在同一台服务器上时复制 INSERT INTO SELECT 的功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-01
    • 2021-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-10
    相关资源
    最近更新 更多