Apakah ada kueri di Snowflake untuk mengidentifikasi karakter dalam file yang tidak valid utf8 [duplikat]
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
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)?
Jawaban rinci ditemukan di sini Bagaimana menemukan baris dengan karakter non utf8 di Snowflake?
Sebaiknya tandai pertanyaan saya sebagai duplikat dan lihat tautannya.