如何去除 Netezza 列中的特殊字符
How to get rid of special character in Netezza columns
我正在使用 ETL 工具 Talend 将数据从一个 Netezza 数据库传输到另一个数据库。当我从 varchar(30) 字段中提取数据并尝试将其放入新数据库的 varchar(30) 字段中时,它给出了一个错误,指出它太长了。日志显示该字段末尾有空格,后跟一个正方形,代表一些我无法理解的字符。我在下面附上了日志的屏幕截图。我试过写 SQL 来拉这个字段并替换我认为是 CRLF 的东西,但没有运气。当我在该字段上执行 select 并获取长度时,它比您看到的多了几个字符,所以有些东西在那里,我想摆脱它。修剪没有任何作用。
这个 SQL 并不 return 比简单地在列本身上执行 length() 更短。有谁知道它还能是什么?
SELECT LENGTH(trim(translate(TRANSLATE(<column>, chr(13), ''), chr(10), ''))) as len_modified
请注意,日志中的最后一列(方括号中的方块)应该显示检查的最后一个字符。
将数据保存到更大的目标 table 大小,这样才行。如果30个字符的数据放在500个字符中table。让它工作。然后在最长的字段上逐个字符地查看以确定要添加的字符。使用像 ascii() 这样的命令来确定各个字符的 ascii 值以及开头和结尾。您很可能会在开头或结尾获得一些额外的角色。确定额外的字符数据是什么,然后编写代码将其删除或永远不加载它,以便它适合 30 个字符的列。或者只是将目标列保留更长的时间并包含其他字符。例如,Varchar(30) 变为 Varchar(32)(浪费 space 但不要更改传入的数据)。
我正在使用 ETL 工具 Talend 将数据从一个 Netezza 数据库传输到另一个数据库。当我从 varchar(30) 字段中提取数据并尝试将其放入新数据库的 varchar(30) 字段中时,它给出了一个错误,指出它太长了。日志显示该字段末尾有空格,后跟一个正方形,代表一些我无法理解的字符。我在下面附上了日志的屏幕截图。我试过写 SQL 来拉这个字段并替换我认为是 CRLF 的东西,但没有运气。当我在该字段上执行 select 并获取长度时,它比您看到的多了几个字符,所以有些东西在那里,我想摆脱它。修剪没有任何作用。
这个 SQL 并不 return 比简单地在列本身上执行 length() 更短。有谁知道它还能是什么?
SELECT LENGTH(trim(translate(TRANSLATE(<column>, chr(13), ''), chr(10), ''))) as len_modified
请注意,日志中的最后一列(方括号中的方块)应该显示检查的最后一个字符。
将数据保存到更大的目标 table 大小,这样才行。如果30个字符的数据放在500个字符中table。让它工作。然后在最长的字段上逐个字符地查看以确定要添加的字符。使用像 ascii() 这样的命令来确定各个字符的 ascii 值以及开头和结尾。您很可能会在开头或结尾获得一些额外的角色。确定额外的字符数据是什么,然后编写代码将其删除或永远不加载它,以便它适合 30 个字符的列。或者只是将目标列保留更长的时间并包含其他字符。例如,Varchar(30) 变为 Varchar(32)(浪费 space 但不要更改传入的数据)。