Azure Synapse Analytics'te sunucusuz SQL havuzunu kullanarak CSV veya Parquet dosyalarından UTF-8 metnini okuma sorunlarını giderme

Bu makalede, Azure Synapse Analytics'te sunucusuz SQL havuzunu kullanarak CSV veya Parquet dosyalarından UTF-8 metnini okumak için sorun giderme adımları sağlanır.

Sunucusuz SQL havuzu kullanılarak BIR CSV veya PARQUET dosyasından UTF-8 metni okunduğunda, sorgu UTF8 olmayan harmanlamalara sahip VARCHAR sütunlarını döndürürse, ü ve ö gibi bazı özel karakterler yanlış dönüştürülür. Bu, SQL Server ve Azure SQL bilinen bir sorundur. Müşteri sorgularının etkilenmesi için Synapse SQL'de UTF8 olmayan harmanlama varsayılan değerdir. Standart İngilizce karakterler ve bazı genişletilmiş Latin karakterleri alt kümesi kullanan müşteriler dönüştürme hatalarını fark etmeyebilir. Sunucusuz SQL havuzunda UTF-8 metnini okumak için her zaman UTF-8 harmanlamalarını kullanma bölümünde yanlış dönüştürme daha ayrıntılı olarak açıklanmıştır

Geçici çözüm

Bu sorunun geçici çözümü, CSV veya PARQUET dosyalarından UTF-8 metnini okurken her zaman UTF-8 harmanlama kullanmaktır.

  • Çoğu durumda, veritabanında UTF8 harmanlaması ayarlamanız yeterlidir (meta veri işlemi).

    alter database MyDB
           COLLATE Latin1_General_100_BIN2_UTF8;
    
  • OPENROWSET veya dış tablodaki VARCHAR sütununda harmanlamayı açıkça tanımlayabilirsiniz:

    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
    
  • UTF8 verilerini okuyan dış tablolarda UTF8 harmanlama belirtmediyseniz, etkilenen dış tabloları yeniden oluşturmanız ve VARCHAR sütunlarında UTF8 harmanlamayı ayarlamanız gerekir (meta veri işlemi).

Sonraki adımlar