Megosztás a következőn keresztül:


Rövid útmutató: Kiszolgáló nélküli SQL-készlet használata

A Synapse kiszolgáló nélküli SQL-készlet egy kiszolgáló nélküli lekérdezési szolgáltatás, amellyel SQL-lekérdezéseket futtathat az Azure Storage-ban elhelyezett fájlokon. Ebben a rövid útmutatóban megtudhatja, hogyan kérdezhet le különböző típusú fájlokat kiszolgáló nélküli SQL-készlet használatával. A támogatott formátumok listáját az OPENROWSET című témakörben találja.

Ez a rövid útmutató bemutatja, hogyan kérdezhet le CSV-, Apache Parquet- és JSON-fájlokat.

Előfeltételek

Válasszon ki egy SQL-ügyfelet a lekérdezések kibocsátásához:

  • Az Azure Synapse Studio egy webes eszköz, amellyel fájlokat tallózhat a tárban, és SQL-lekérdezéseket hozhat létre.
  • Az mssql-bővítményt tartalmazó Visual Studio Code egy platformfüggetlen, egyszerűsített fejlesztői és adateszköz, amellyel SQL-lekérdezéseket és jegyzetfüzeteket futtathat az igény szerinti adatbázison.
  • Az SQL Server Management Studio egy ügyféleszköz, amellyel SQL-lekérdezéseket futtathat az igény szerinti adatbázisban.

Ez a rövid útmutató a következő paramétereket használja:

Paraméter Leírás
Kiszolgáló nélküli SQL-készletszolgáltatás végpontcíme Kiszolgálónévként használva
Kiszolgáló nélküli SQL-készletszolgáltatás végpontrégiója A mintákban használandó tárterület meghatározására szolgál
Felhasználónév és jelszó a végponthoz való hozzáféréshez Végpont elérésére szolgál
A nézetek létrehozásához használt adatbázis A minták kiindulópontjaként használt adatbázis

Első beállítás

A minták használata előtt:

  • Hozzon létre egy adatbázist a nézetekhez (abban az esetben, ha nézeteket szeretne használni).
  • Hozzon létre olyan hitelesítő adatokat, amelyeket a kiszolgáló nélküli SQL-készlet használ a tárolóban lévő fájlok eléréséhez.

Adatbázis létrehozása

Saját adatbázis létrehozása bemutató célokra. Ezzel az adatbázissal létrehozhatja a nézeteit és a cikkben szereplő mintalekérdezéseket.

Feljegyzés

Az adatbázisok csak a metaadatok megtekintésére szolgálnak, a tényleges adatokhoz nem. Írja le az adatbázis nevét a rövid útmutató későbbi részében.

Használja a következő T-SQL-parancsot, és váltson <mydbname> egy tetszőleges névre:

CREATE DATABASE <mydbname>

Adatforrás létrehozása

Ha kiszolgáló nélküli SQL-készlet használatával szeretne lekérdezéseket futtatni, hozzon létre egy adatforrást, amellyel a kiszolgáló nélküli SQL-készlet hozzáférhet a tárolóban lévő fájlokhoz. Hajtsa végre a következő kódrészletet az ebben a szakaszban található mintákban használt adatforrás létrehozásához. Cserélje le <strong-password-here> egy tetszőleges erős jelszóra.

-- create master key that will protect the credentials:
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<strong-password-here>'

-- create credentials for containers in our demo storage account
CREATE DATABASE SCOPED CREDENTIAL sqlondemand
WITH IDENTITY='SHARED ACCESS SIGNATURE',  
SECRET = 'sv=2022-11-02&ss=b&srt=co&sp=rl&se=2042-11-26T17:40:55Z&st=2024-11-24T09:40:55Z&spr=https&sig=DKZDuSeZhuCWP9IytWLQwu9shcI5pTJ%2Fw5Crw6fD%2BC8%3D'
GO
CREATE EXTERNAL DATA SOURCE SqlOnDemandDemo WITH (
    LOCATION = 'https://sqlondemandstorage.blob.core.windows.net',
    CREDENTIAL = sqlondemand
);

CSV-fájlok lekérdezése

Az alábbi képen a lekérdezendő fájl előnézete látható:

Képernyőkép a CSV-fájl első 10 soráról fejléc nélkül, Új Windows-stílusban.

Az alábbi lekérdezés bemutatja, hogyan olvasható be egy olyan CSV-fájl, amely nem tartalmaz fejlécsort, Windows-stílusú új sorokkal és vesszővel tagolt oszlopokkal:

SELECT TOP 10 *
FROM OPENROWSET
  (
      BULK 'csv/population/*.csv',
      DATA_SOURCE = 'SqlOnDemandDemo',
      FORMAT = 'CSV', PARSER_VERSION = '2.0'
  )
WITH
  (
      country_code VARCHAR (5)
    , country_name VARCHAR (100)
    , year smallint
    , population bigint
  ) AS r
WHERE
  country_name = 'Luxembourg' AND year = 2017

A sémát a lekérdezés fordítási ideje alatt adhatja meg. További példákért tekintse meg a CSV-fájlok lekérdezését.

Parquet-fájlok lekérdezése

Az alábbi minta a Parquet-fájlok lekérdezéséhez használható automatikus sémakövető képességeket mutatja be. A 2017. szeptemberi sorok számát adja vissza séma megadása nélkül.

Feljegyzés

A parquet-fájlok olvasásakor nem kell oszlopokat megadnia a záradékban OPENROWSET WITH . Ebben az esetben a kiszolgáló nélküli SQL-készlet metaadatokat használ a Parquet-fájlban, és név szerint köti össze az oszlopokat.

SELECT COUNT_BIG(*)
FROM OPENROWSET
  (
      BULK 'parquet/taxi/year=2017/month=9/*.parquet',
      DATA_SOURCE = 'SqlOnDemandDemo',
      FORMAT='PARQUET'
  ) AS nyc

További információ: Lekérdezési parquet-fájlok kiszolgáló nélküli SQL-készlet használatával.

JSON-fájlok lekérdezése

JSON-mintafájl

A fájlok egy json-tárolóban vannak tárolva mappakönyvek használatával, és egyetlen könyvbejegyzést tartalmaznak az alábbi struktúrával:

{  
   "_id":"ahokw88",
   "type":"Book",
   "title":"The AWK Programming Language",
   "year":"1988",
   "publisher":"Addison-Wesley",
   "authors":[  
      "Alfred V. Aho",
      "Brian W. Kernighan",
      "Peter J. Weinberger"
   ],
   "source":"DBLP"
}

Mintalekérdezés

Az alábbi lekérdezés bemutatja, hogyan használható JSON_VALUE skaláris értékek (cím, kiadó) lekérésére egy olyan könyvből, amelynek címe Probabilistic and Statistical Methods in Cryptology, An Introduction:

SELECT
    JSON_VALUE(jsonContent, '$.title') AS title
  , JSON_VALUE(jsonContent, '$.publisher') as publisher
  , jsonContent
FROM OPENROWSET
  (
      BULK 'json/books/*.json',
      DATA_SOURCE = 'SqlOnDemandDemo'
    , FORMAT='CSV'
    , FIELDTERMINATOR ='0x0b'
    , FIELDQUOTE = '0x0b'
    , ROWTERMINATOR = '0x0b'
  )
WITH
  ( jsonContent varchar(8000) ) AS [r]
WHERE
  JSON_VALUE(jsonContent, '$.title') = 'Probabilistic and Statistical Methods in Cryptology, An Introduction'

Fontos

A teljes JSON-fájlt egyetlen sorként vagy oszlopként olvastuk. Tehát FIELDTERMINATOR, FIELDQUOTEés ROWTERMINATOR azért vannak beállítva, 0x0b mert nem várjuk, hogy megtaláljuk a fájlban.