Apakah ada kueri di Snowflake untuk mengidentifikasi karakter dalam file yang tidak valid utf8 [duplikat]

Aug 19 2020

Saya memiliki file yang ketika memuat ke Snowflake mendapat kesalahan untuk karakter UTF-8 yang tidak valid, saya telah berhasil memuatnya ke dalam tabel menggunakan pengkodean lain, dengan membuat format file dengan opsi ENCODING = 'iso-8859-1'tetapi saya ingin menemukan cara untuk mendapatkannya karakter dipertanyakan.

Saya sudah mencoba TO_BINARY(col,'UTF-8')fungsi dengan harapan akan gagal pada col yang memiliki UTF-8 yang tidak valid tetapi tidak bisa mendapatkan hasil yang valid untuk menangkap karakter tersebut, apakah ada yang menghadapi masalah yang sama?

Jawaban

1 DarrenGardner Aug 20 2020 at 02:33

Harap dicatat bahwa SEMUA data karakter dalam Snowflake dikodekan menggunakan UTF-8 . Tidak ada pilihan lain. Beberapa waktu lalu, ini tidak sepenuhnya benar, dan dimungkinkan untuk memiliki data karakter di Snowflake yang BUKAN UTF-8 yang valid. Tapi itu seharusnya tidak mungkin dilakukan sekarang.

Menentukan ENCODING = 'iso-8859-1'opsi yang diinstruksikan Snowflake (selama operasi COPY INTO) untuk melakukan terjemahan kumpulan karakter pada file (yang kemudian diinterpretasikan sebagai dikodekan dalam ISO-8859-1), memetakan semua karakter ke dalam UTF-8 yang setara seperti yang tertulis di dalamnya Kepingan salju. Akibatnya, semua data di Snowflake dienkode dengan UTF-8, dan oleh karena itu tidak boleh ada karakter non-UTF-8 APA PUN untuk ditemukan. Meskipun demikian, hasil terjemahan kumpulan karakter mungkin tidak akan diterjemahkan ke karakter UTF-8 yang benar / diharapkan jika file (sumber) yang mendasari tidak benar-benar dikodekan dengan pengkodean yang Anda tentukan selama COPY INTO (dalam hal ini, ISO -8859-1).

Mengingat ini, masalah utama apa yang Anda coba selesaikan di sini? Apakah Anda memuat file sumber ENCODING = 'iso-8859-1'yang sebenarnya bukan ISO-8859-1? Atau apakah Anda mengatakan bahwa file sumber WAS benar-benar dikodekan sebagai ISO-8859-1, namun entah bagaimana karakter yang dihasilkan di Snowflake adalah (1) salah atau (2) UTF-8 tidak valid? Atau Anda mencoba untuk menentukan pengkodean sebenarnya dari file sumber (mengabaikan keseluruhan aspek ISO-8859-1 sama sekali)?

Monem_منعم Aug 19 2020 at 19:08

Jawaban rinci ditemukan di sini Bagaimana menemukan baris dengan karakter non utf8 di Snowflake?

Sebaiknya tandai pertanyaan saya sebagai duplikat dan lihat tautannya.