UTF-8-szövegek CSV- vagy Parquet-fájlokból való olvasásának hibaelhárítása kiszolgáló nélküli SQL-készlet használatával az Azure Synapse Analyticsben
Ez a cikk hibaelhárítási lépéseket tartalmaz az UTF-8 szöveg CSV- vagy Parquet-fájlokból való olvasásához kiszolgáló nélküli SQL-készlet használatával az Azure Synapse Analyticsben.
Ha egy CSV- vagy PARQUET-fájlból UTF-8 szöveget olvas be kiszolgáló nélküli SQL-készlettel, a rendszer helytelenül konvertál néhány speciális karaktert, például az ü és az ö karaktert, ha a lekérdezés nem UTF8 rendezésű VARCHAR oszlopokat ad vissza. Ez egy ismert probléma SQL Server és Azure SQL. A Synapse SQL-ben a nem UTF8-rendezés az alapértelmezett, így az ügyfél-lekérdezések is érintettek lesznek. Előfordulhat, hogy azok az ügyfelek, akik szabványos angol karaktereket és a kiterjesztett latin karakterek bizonyos részhalmazát használják, nem veszik észre az átváltási hibákat. A helytelen konverziót részletesebben a Mindig használjon UTF-8 rendezéseket a kiszolgáló nélküli SQL-készlet UTF-8 szövegének olvasásához című témakörben talál.
Áthidaló megoldás
A probléma megkerülő megoldása, hogy mindig UTF-8 rendezést használ, amikor CSV- vagy PARQUET-fájlokból olvas UTF-8 szöveget.
Sok esetben csak be kell állítania az UTF8-rendezést az adatbázisban (metaadat-művelet).
alter database MyDB COLLATE Latin1_General_100_BIN2_UTF8;
Az OPENROWSET-ben vagy külső táblában explicit módon definiálhatja a VARCHAR oszlop rendezését:
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
Ha nem adott meg UTF8-rendezést az UTF8-adatokat olvasó külső táblákon, újra létre kell hoznia az érintett külső táblákat, és be kell állítania az UTF8 rendezést a VARCHAR-oszlopokon (metaadat-művelet).