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).