使用talend将数据从一个mysql数据库迁移到另一个

时间:2018-02-18 14:29:07

标签: mysql bigdata etl talend talend-mdm

目标是将数据从一个mysql数据库迁移到另一个mysql数据库,我关心的是定义一个文本文件,其中包含定义源数据库的参数(主机,端口,数据库名等)以及文件参数。输出数据库。

实际上,我使用的是以下架构:

tContextLoad_1 -> tFileInputDelimited_1-> tMysqlInput_1 (db_source) -> tMap->
tMysqlInput_2 (db_destination)

取决于发生的问题是:

1-不支持tContextLoad_1文本文件内容更改,并且指向始终位于第一个数据库"源数据库"。

2-当我创建第二个tContextLoad_2无法通过({)或({ - 1}}与tFileOutputDelimited_1(db_destination)链接的(但是)或(触发 - 开启主题确定)连接时,如何定义包含基本输出数据(主机,数据库名,标识符,密码等)的定义参数的文件?

2 个答案:

答案 0 :(得分:0)

您可以使用如下配置文件

<connections>
  <connection>
    <host></host>
    <port></port>
    <database></database>
    <table></table> 
    <user></user>
    </password></password>
  </connection>

  <connection>
    <host></host>
    <port></port>
    <database></database>
    <table></table> 
    <user></user>
    </password></password>
  </connection>
</connections>

然后您可以迭代连接标记以获取数据库详细信息,然后将它们分配给变量并使用它。

所以流程就像, tFileInputXML - &GT; SetGlobalVar - &GT; tMySQLConnection - &GT; tMySQLInput - &GT; TMAP - &GT; tMySQLOutput

答案 1 :(得分:0)

您既可以定义单个文件,但可以为源连接和目标连接使用不同的参数名称,也可以定义2个文件:一个用于源,一个用于目标,在这种情况下,您的参数可以具有相同的名称:

  1. 具有不同参数名称的单个上下文文件:
  2. tFileInputDelimited_1 (context file) -- tContextLoad_1 | OnSubjobOk | Source(host1,db1,user1,pwd1) -- target(host2,db2,user2,pwd2)

    1. 具有相同参数名称的不同上下文文件:
    2. tFileInputDelimited_1 (1st context file) -- tContextLoad_1 | OnSubjobOk | Source(host,db,user,pwd) -- temp_file | OnSubjobOk | tFileInputDelimited_2 (2nd context file) -- tContextLoad_2 | OnSubjobOk | temp_file -- target(host,db,user,pwd)

      我相信你会同意我的看法,即第一种解决方案更简单,更高效。

      您的上下文文件可能如下所示:key = value

      host=myHost
      db=myDB
      user=myUser