在 Powercenter 中将“á”等字符替换为“a”
Replace characters such as " á " for " a " in Powercenter
我需要 Powercenter 方面的帮助。我有一个我使用的平面文件,在某些列中有文本,例如 "Los Ángeles",我需要将其更改为 "Los Angeles",否则“Á”显示为空字符,以 "Los NULLngeles" 或类似的东西。
一些附加信息:
源文件是用“;”分隔的平面文件 .CSV在文件格式中,代码页为:7 位 ASCII
目标文件是平面文件 .TXT,带有列分隔线“|”。它具有文件格式,代码页:MS Windows Latin 1 (ANSI),Latin 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 服务器不会崩溃。
这是一个数据质量问题,必须返回给源团队。使用 REPLACE_CHR 无法找到它,因为它不是 ASCII 字符。
就映射而言,可以使用 REG_REPLACE 删除像这样的非 ascii 字符。
示例:REG_REPLACE(PRODUCT_DESC.'[^[:print]]','')
其他方法:https://kb.informatica.com/howto/6/Pages/21/535269.aspx?
您可以尝试在会话级别、文件属性设置中将代码页设置为 UTF-8 编码。还要检查您要加载的平面文件的代码页,它应该是 UTF-8。
希望这个回答对你有帮助。
我没有足够的声誉将此作为评论留下,否则我会的,但我会介绍我将如何解决这个问题。
在 Informatica 中,当您 select 数据查看器和 运行 数据查看器时,您能看到洛杉矶显示为 "Los Ángeles" 还是显示为 "Los NULLngeles"?
如果是后者,此解决方案将不起作用,因为您需要在将源数据加载到 informatica 之前对其进行清理(可以使用 python 和正则表达式轻松完成)
我将如何解决这个问题是使用 java trasnformation
遍历您的字符串,查看它们是否包含任何特殊字符,如果包含,则在该索引处替换它们。伪代码如下所示:
for(i = 0; i < myString.length(); i++){
if(myString[i] == 'á' || myString[i] == 'Á')
myString[i] = 'a';
}
我需要 Powercenter 方面的帮助。我有一个我使用的平面文件,在某些列中有文本,例如 "Los Ángeles",我需要将其更改为 "Los Angeles",否则“Á”显示为空字符,以 "Los NULLngeles" 或类似的东西。
一些附加信息:
源文件是用“;”分隔的平面文件 .CSV在文件格式中,代码页为:7 位 ASCII
目标文件是平面文件 .TXT,带有列分隔线“|”。它具有文件格式,代码页:MS Windows Latin 1 (ANSI),Latin 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 服务器不会崩溃。
这是一个数据质量问题,必须返回给源团队。使用 REPLACE_CHR 无法找到它,因为它不是 ASCII 字符。
就映射而言,可以使用 REG_REPLACE 删除像这样的非 ascii 字符。 示例:REG_REPLACE(PRODUCT_DESC.'[^[:print]]','')
其他方法:https://kb.informatica.com/howto/6/Pages/21/535269.aspx?
您可以尝试在会话级别、文件属性设置中将代码页设置为 UTF-8 编码。还要检查您要加载的平面文件的代码页,它应该是 UTF-8。 希望这个回答对你有帮助。
我没有足够的声誉将此作为评论留下,否则我会的,但我会介绍我将如何解决这个问题。
在 Informatica 中,当您 select 数据查看器和 运行 数据查看器时,您能看到洛杉矶显示为 "Los Ángeles" 还是显示为 "Los NULLngeles"?
如果是后者,此解决方案将不起作用,因为您需要在将源数据加载到 informatica 之前对其进行清理(可以使用 python 和正则表达式轻松完成)
我将如何解决这个问题是使用 java trasnformation
遍历您的字符串,查看它们是否包含任何特殊字符,如果包含,则在该索引处替换它们。伪代码如下所示:
for(i = 0; i < myString.length(); i++){
if(myString[i] == 'á' || myString[i] == 'Á')
myString[i] = 'a';
}