Snowflake cloud data platform 如何从Snowflake中删除Unicode替换字符
使用COPY-INTO命令将数据加载到Snowflake时,有一个名为:REPLACE\u INVALID\u CHARACTERS的参数。根据文档,如果设置为TRUE,则任何无效的UTF-8字符都将替换为Unicode替换字符,如下所示(�) 我的问题是,如何从表中的数据中删除此字符?我曾尝试使用REGEXP_REPLACE,但无法找到正确的使用模式 以下是数据的示例: 请注意,LENGTH函数甚至没有注册字符在那里,因为它说有7个字符,而实际上有8个 非常感谢您提供有关使用哪个Snowflake SQL函数来删除这些字符的任何建议!unicode替换字符是Snowflake cloud data platform 如何从Snowflake中删除Unicode替换字符,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,使用COPY-INTO命令将数据加载到Snowflake时,有一个名为:REPLACE\u INVALID\u CHARACTERS的参数。根据文档,如果设置为TRUE,则任何无效的UTF-8字符都将替换为Unicode替换字符,如下所示(�) 我的问题是,如何从表中的数据中删除此字符?我曾尝试使用REGEXP_REPLACE,但无法找到正确的使用模式 以下是数据的示例: 请注意,LENGTH函数甚至没有注册字符在那里,因为它说有7个字符,而实际上有8个 非常感谢您提供有关使用哪个Snowf
\uFFFD
,因此将其替换为'
应该可以
select replace('asdf�', '\uFFFD', '');
--Returns: asdf
在使用Snowflake进行了大量的来回支持之后,我们最终决定创建自己的javascript函数来清除非ascii字符,包括这个unicode替换字符 使这一点具有挑战性的是,Snowflake添加的unicode替换字符本身似乎不是有效字符,因此很难删除 下面的功能是我们发现的唯一可靠工作的功能。它也非常快:
CREATE OR REPLACE FUNCTION ADMIN.DESIGN.REPLACE_NON_ASCII("input" varchar, "replacement" varchar )
RETURNS varchar
LANGUAGE JavaScript
AS
$$
//This function is used to cleanse non ascii characters out of data included corrupt non-unicode characters
var output = "";
if (input == undefined){
return input
}
else {
for (var i=0; i<input.length; i++) {
if (input.charCodeAt(i) >= 32 && input.charCodeAt(i) <= 127) {
output += input.charAt(i);
}
else {
output += replacement
}
}
return output
}
$$
创建或替换函数ADMIN.DESIGN.REPLACE_非ASCII(“输入”varchar,“替换”varchar)
返回varchar
语言JavaScript
作为
$$
//此函数用于从包含损坏的非unicode字符的数据中清除非ascii字符
var输出=”;
如果(输入==未定义){
返回输入
}
否则{
对于(var i=0;i=32&&input.charCodeAt(i),您是否尝试了REPLACE(例如,UNICODE(65533))
?应该可以工作,但我目前无法测试该理论。