如何在Talend中将国家名称更改为ISO代码?

我需要从Excel工作表中获取信息并将其input到Salesforce中的自定义对象中。 tFileList – > tFileInputExcel – > tMap – > tSalesforceOutput

到目前为止,一切正常,但唯一的问题是,Salesforce需要国家的ISO代码,而不是完整的国家名称。 如何将国家的全名更改为ISO代码并将其传递给Salesforce?

我需要Excel表中的值不能改变。 所以在Talend中,我需要以某种方式将ISO代码传递给Salesforce组件,而不影响原始表单。

input示例:

Name / Country / Phone "Bob" / "Germany" / "99999" 

输出到Salesforce的示例:

 "Bob" / "DE" / "99999" 

这很简单,但你需要一个国家名称列表与ISO代码,如这个从维基百科。

以一些可以读入Talend的格式获取该列表,例如将其放入分隔文件,Excel电子表格或数据库表格中。

从那里你只需要通过join国家名称来jointMap组件中的数据,然后确保在你的tSalesforceOutputstream中使用ISO代码。

一个简单的例子可能看起来像这样:

工作布局获得ISO2代码

我们的Excel数据如下所示:

要加载到Salesforce的Excel数据

注意第五行。 英国不是ISO国家名(而是英国)。

然后,我们将维基百科的ISO2代码列表放入Excel中的CSV中:

ISO2代码和国家名称

确保正确地configuration你的tFileInputDelimited来迎合CSV。 您将需要默认的转义和引用选项来允许数据中的逗号(例如“巴勒斯坦,状态”)。

然后tMap中的连接就这样完成了:

tMap加入

在这里,我们将在国家名称字段中join数据,并将成功的联接输出到Salesforcestream程。 我们还采用备用stream来获取没有ISO2国家/地区名称的行的任何内部联接拒绝。 这可能会输出到另一个Excel文件或其他地方进行手动更正,或者帮助开发一些标准化例程,这些例程在未来join之前需要应用到Excel数据中(比如寻找“英国”并replace它的tReplace与“英国”)。

我已经输出这些stream到2个tLogRow组件把它扔到标准输出,格式化为一个表格:

ISO2连接输出