Memecahkan masalah pembacaan teks UTF-8 dari file CSV atau Parquet menggunakan kumpulan SQL tanpa server di Azure Synapse Analytics

Artikel ini berisi langkah-langkah pemecahan masalah pembacaan teks UTF-8 dari file CSV atau Parquet menggunakan kumpulan SQL tanpa server di Azure Synapse Analytics.

Saat teks UTF-8 dibaca dari file CSV atau PARQUET menggunakan kumpulan SQL tanpa server, beberapa karakter khusus seperti ü dan ö akan salah dikonversi jika kueri menampilkan kolom VARCHAR dengan kolase non-UTF8. Ini adalah masalah umum di SQL Server dan Azure SQL. Kolase non-UTF8 adalah default dalam Synapse SQL sehingga pertanyaan pelanggan akan terpengaruh. Pelanggan yang menggunakan karakter bahasa Inggris standar dan beberapa subset karakter Latin yang diperluas mungkin tidak melihat kesalahan konversi. Konversi yang salah dijelaskan secara lebih rinci dalam Selalu gunakan kolase UTF-8 untuk membaca teks UTF-8 dalam kumpulan SQL tanpa server

Solusi Sementara

Solusi untuk masalah ini adalah selalu menggunakan kolase UTF-8 saat membaca teks UTF-8 dari file CSV atau PARQUET.

  • Dalam banyak kasus, Anda hanya perlu mengatur kolase UTF8 pada database (operasi metadata).

    alter database MyDB
           COLLATE Latin1_General_100_BIN2_UTF8;
    
  • Anda dapat secara eksplisit menentukan kolase pada kolom VARCHAR di OPENROWSET atau tabel eksternal:

    select geo_id, cases = sum(cases)
    from openrowset(
             bulk 'latest/ecdc_cases.parquet', data_source = 'covid', format = 'parquet'
         ) with ( cases int,
                  geo_id VARCHAR(6) COLLATE Latin1_General_100_BIN2_UTF8 ) as rows
    group by geo_id
    
  • Jika tidak menentukan kolase UTF8 pada tabel eksternal yang membaca data UTF8, Anda perlu membuat ulang tabel eksternal yang terpengaruh dan mengatur kolase UTF8 pada kolom VARCHAR (operasi metadata).

Langkah berikutnya