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

Következő lépések