utf8 [重複]で無効なファイル内の文字を識別するためのクエリがSnowflakeにありますか?
Snowflakeにロードすると無効なUTF-8文字でエラーが発生するファイルがありますENCODING = 'iso-8859-1'
が、オプション付きのファイル形式を作成することで、別のエンコーディングを使用してテーブルにロードできましたが、それらを取得する方法を見つけたいと思います照会された文字。
TO_BINARY(col,'UTF-8')
無効なUTF-8を持つ列で失敗することを期待して関数を試しましたが、それらの文字をキャプチャするための有効な結果を取得できませんでしたが、同じ問題に直面した人はいますか?
回答
Snowflake内のすべての文字データはUTF-8を使用してエンコードされていることに注意してください。他に選択肢はありません。しばらく前、これは厳密には真実ではなく、Snowflakeに有効なUTF-8ではない文字データが含まれる可能性がありました。しかし、それは今は不可能なはずです。
ENCODING = 'iso-8859-1'
(COPY INTO操作中に)Snowflakeにファイルに対して文字セット変換を実行するように指示されたオプションを指定すると(ISO-8859-1でエンコードされていると解釈されます)、すべての文字が書き込まれたときに同等のUTF-8にマッピングされます。スノーフレーク。その結果、スノーフレーク内のすべてのデータは、UTF-8エンコードであるため、そこにすべきではないANY発見する非UTF-8文字。とはいえ、基になる(ソース)ファイルがCOPY INTO(この場合はISO)で指定したエンコードで実際にエンコードされていない場合、文字セット変換の結果が正しい/予期されるUTF-8文字に変換されない可能性があります。 -8859-1)。
これを考えると、ここで解決しようとしている最終的な問題は何ですか?ENCODING = 'iso-8859-1'
実際にはISO-8859-1ではないソースファイルをロードしましたか?または、ソースファイルがあることを言っているWAS真にISO-8859-1としてエンコードされ、まだ何とかスノーフレークにおける結果の文字は、(1)正しくないか、(2)不正なUTF-8ですか?または、ソースファイルの実際のエンコーディングを決定しようとしていますか(ISO-8859-1の側面全体を完全に無視します)?
詳細な回答はここにありますSnowflakeでutf8以外の文字を含む行を見つける方法は?
私の質問を重複としてマークし、リンクを参照してください。