在Powercenter中将诸如á之类的字符替换为“ a”

时间:2019-11-07 14:32:12

标签: informatica informatica-powercenter

我需要有关Powercenter的帮助。我有一个平面文件,在某些列中使用了这样的文本,例如“ LosÁngeles”,我需要将其更改为“ Los Angeles”,否则“Á”显示为空字符,以“ Los NULLngeles”结尾”之类的东西。

一些其他信息:

  • 源文件是平面文件.CSV,中间用“;”分隔;具有文件格式的代码页:7位ASCII

  • 目标文件是一个平面文件.TXT,带有列分隔符管道“ |”。它具有文件格式,代码页:MS Windows Latin 1(ANSI),拉丁语1的超集

我尝试在以下代码中使用REPLACECHR:

REPLACECHR(1,
REPLACECHR(1,
REPLACECHR(1,
REPLACECHR(1,
REPLACECHR(1,
REPLACECHR(1,
REPLACECHR(1,
REPLACECHR(1,
REPLACECHR(1,
REPLACECHR(1,
REPLACECHR(1,
REPLACECHR(1,
REPLACECHR(0, clv, '|', ''),'á','a'),'é','e'),'í','i'),'ó','o'),'ú','u'),'Á','A'),'É','E'),'Í','I'),'Ó','O'),'Ú','U'),'ñ','n'),'Ñ','Ñ')

但是,这没有用。我该如何做才能做到我想要的?

作为附件,第一个REPLACECHR是删除所有管道,以使上传到SQL Server不会崩溃。

3 个答案:

答案 0 :(得分:0)

这是一个数据质量问题,必须重新提交给源团队。无法使用REPLACE_CHR来找到它,因为它不是ASCII字符。

就映射而言,可以使用REG_REPLACE删除像这样的非ascii字符。 示例:REG_REPLACE(PRODUCT_DESC。'[^ [:print]]','')

其他操作方式:https://kb.informatica.com/howto/6/Pages/21/535269.aspx

答案 1 :(得分:0)

您可以尝试在会话级别,文件属性设置中将代码页设置为UTF-8编码。还要检查您要加载的平面文件的代码页,它应为UTF-8。 希望这个答案对您有帮助。

答案 2 :(得分:0)

我没有足够的声誉将其留为评论,否则我会保留,但是我将介绍解决方法。

在Informatica中,当您选择数据查看器并在源上运行数据查看器时,您会看到洛杉矶显示为“ LosÁngeles”还是将其显示为“ Los NULLngeles”?

如果是后者,则此解决方案将不起作用,因为您需要先清理源中的数据,然后再将其加载到informatica中(可以使用python和regex轻松完成)

我如何解决此问题,是使用java trasnformation遍历您的字符串,以查看它们是否包含任何特殊字符,如果确实包含任何特殊字符,然后在该索引处替换它们。伪代码将如下所示:

for(i = 0; i < myString.length(); i++){
   if(myString[i] == 'á' || myString[i] == 'Á')
        myString[i] = 'a';
}