Táblák létrehozása, tömeges importálás és adatok lekérdezése

Befejeződött

Az egyetemnek szüksége van egy helyre a jelenleg szövegfájlokban tárolt adatok számára. Az adatokat relációssá szeretnék tenni, hogy azok hozzáférhetőbbek legyenek. Úgy döntöttek, hogy egy Azure SQL Database-beli önálló adatbázist használnak társzolgáltatásként. Vizsgáljuk meg az SQL Database-t és az adatok feltöltésének és lekérdezésének módját.

Önálló adatbázis létrehozása az Azure Portal használatával

Az SQL Database egy, a Microsoft SQL Server-adatbázismotor legújabb, stabil verzióján alapuló relációsadatbázis-szolgáltatás. Az SQL Database egyszerűen használható, nagy teljesítményű adatbázis, amely megbízható és rendkívül biztonságos. Az SQL Database használatával új alkalmazásokat, webhelyeket és mikroszolgáltatásokat hozhat létre a választott programozási nyelven, és nem kell kezelnie az infrastruktúrát.

Önálló adatbázist az Azure Portalon vagy az Azure PowerShell, illetve CLI használatával hozhat létre.

  1. Az Azure Portal menüjében válassza az Erőforrás létrehozása elemet.

    Screenshot of Azure portal menu and Create a resource option.

  2. Válassza az Adatbázisok, majd az SQL Database elemet.

    Screenshot of the Databases and SQL Database options.

  3. A parancssori felület használatához futtassa az és az sql db create a az sql server create parancsokat.

  4. A PowerShell használatához futtassa az és New-AzSqlDatabase a New-AzSqlServer parancsokat.

Önálló adatbázis létrehozásakor a rendszer az adatbázis kezeléséhez használandó kiszolgáló megadását kéri. Létrehozhat új kiszolgálót, vagy használhat egy már meglévőt.

Amikor új kiszolgálót hoz létre, és sql-hitelesítést használ, a rendszer kérni fogja, hogy adjon meg egy kiszolgálói rendszergazdai felhasználónevet és jelszót. Ezekkel a hitelesítő adatokkal csatlakozhat a kiszolgálóhoz rendszergazdai feladatok elvégzéséhez és a kiszolgáló által vezérlő adatbázisokhoz való hozzáféréshez. Az SQL Database a Microsoft Entra hitelesítést is támogatja. Az SQL és a Microsoft Entra hitelesítést is használhatja. Új kiszolgáló létrehozásakor azonban mindig be kell állítania egy rendszergazdát, vagy létre kell hoznia egy rendszergazdai fiókot. Ezután adjon hozzáférést a Microsoft Entra-azonosítóban tárolt fiókokhoz.

Minden adatbázis-kiszolgálót tűzfal véd, amely blokkolja a potenciálisan rosszindulatú folyamatokat. A tűzfalat megnyithatja más Azure-szolgáltatások számára. Más számítógépek hozzáférését célzottan engedélyezheti azok IP-címe vagy -címtartománya alapján. Az SQL Database fejlett adatbiztonságot is nyújt, amely a következőket teszi lehetővé:

  • A táblák egyes oszlopaiban lévő adatok bizalmasságának megadása.
  • Az adatbázisok sebezhetőségének felmérése és az elhárításukhoz szükséges lépések végrehajtása.
  • Riasztások küldése fenyegetés észlelése esetén.

Az erőforrásokat a virtuális mag (vCore) modellel konfigurálhatja, amely meghatározza a lefoglalni kívánt memória-, I/O- és CPU-erőforrásokat. A számítási és tárolási erőforrások külön méretezhetők. Erőforrásokat adatbázis-tranzakciós egységekben (DTU-k) is hozzárendelhet. A DTU a tesztelt tranzakciók elvégzéséhez szükséges erőforrások kalibrált költségének mértéke.

Ha több adatbázissal rendelkezik, és az adatbázisok erőforrásigényei ingadoznak, rugalmas SQL-készletet is használhat. Ezzel a funkcióval egy erőforráskészlet osztható meg igény szerint a készletbe helyezett adatbázisok között.

Adatbázis létrehozásakor meg kell adnia az adatok rendezési módját is. A rendezés határozza meg az adatbázis adatok rendezéséhez és összehasonlításához használt szabályait. Beállítja a szöveges adatokhoz használt karakterkészletet is. Az adatbázis létrehozása után módosíthatja a rendezést, azonban ha az adatbázis már adatokat tartalmaz, érdemes változatlanul hagyni.

Táblák létrehozása

Táblák az alábbi eszközök bármelyikével létrehozhatók:

  • Az Azure Portal lekérdezésszerkesztője
  • Az sqlcmd segédprogram és a Cloud Shell
  • SQL Server Management Studio

Bármelyik eszközt is választja, a Transact-SQL (T-SQL) paranccsal határozhatja meg a CREATE TABLE táblát. Az SQL Database támogatja az elsődleges kulcsokat, a külső kulcsokat, az indexeket és az eseményindítókat a táblákon. Az alábbi mintakód egy pár kapcsolódó táblát és egy nemclustered indexet hoz létre. Ezeket a parancsokat kötegként is lehet futtatni a Lekérdezésszerkesztőben vagy az sqlcmd segédprogramban.

CREATE TABLE MyTable
(
    MyColumn1 INT NOT NULL PRIMARY KEY,
    MyColumn2 VARCHAR(50) NOT NULL
);

CREATE TABLE MyTable2
(
    AnotherColumn1 INT NOT NULL,
    AnotherColumn2 INT NOT NULL REFERENCES MyTable,
    AnotherColumn3 VARCHAR(50) NULL,
    PRIMARY KEY (AnotherColumn1, AnotherColumn2)
);

CREATE INDEX cci ON MyTable2(AnotherColumn3);

A lekérdezésszerkesztő eléréséhez az Azure Portalon nyissa meg az adatbázis oldalát, majd válassza a Lekérdezésszerkesztő elemet. A rendszer hitelesítő adatokat kér. A Hitelesítés típusaként beállíthat SQL Server-hitelesítést, majd megadhatja az adatbázis létrehozásakor beállított felhasználónevet és jelszót. Vagy kiválaszthatja az Active Directory jelszóhitelesítést , és megadhatja egy jogosult felhasználó hitelesítő adatait a Microsoft Entra-azonosítóban. Ha az Active Directory-beli egyszeri bejelentkezés engedélyezve van, Azure-identitással is csatlakozhat.

The SQL Database sign-in page in the Azure portal.

Írja be a T-SQL-kódot a lekérdezési panelen, majd válassza a Futtatás lehetőséget a végrehajtáshoz. Ha a T-SQL utasítás lekérdezés, a visszaadott sorok megjelennek az Eredmények panelen. Az Üzenetek ablaktábla információkat jelenít meg, például a visszaadott sorok számát vagy az előforduló hibákat:

The query editor in the Azure portal with the various panes highlighted.

Az sqlcmd segédprogram használatához nyissa meg a Cloud Shellt, és futtassa az alábbi parancsot. A <server> kifejezést cserélje le a létrehozott adatbázis-kiszolgáló nevére, a <database> kifejezést az adatbázis nevére, a <user name> és a <password> kifejezést pedig a hitelesítő adatokra.

sqlcmd -S <server>.database.windows.net -d <database> -U <username> -P <password>

Ha a bejelentkezési parancs sikeres, megjelenik egy 1> üzenet. A T-SQL-parancsokat több sorban is megadhatja, majd beírhatja GO a futtatásukhoz.

Adatok tömeges importálása bcp-vel

A Microsoft több eszközt is kínál az adatok SQL adatbázisba való feltöltésére:

  • SQL Server Integration Services (SSIS)
  • A BULK INSERT SQL-utasítást
  • A tömeges másolási segédprogramot (Bulk Copy Program, bcp)

A bcp segédprogramot gyakran használják, mivel kényelmes, és könnyű adatok több táblába való importálásához szkriptelni. A bcp segédprogram egy parancssori eszköz, amellyel adatbázisadatokat lehet importálni és exportálni. Az adatok importálásához a bcp segédprogramnak az alábbi három dologra van szüksége:

  • A feltöltendő forrásadatok.
  • Egy meglévő tábla a céladatbázisban.
  • Egy formátumfájl , amely meghatározza az adatok formátumát, és azt, hogy hogyan képezhet le adatokat a céltábla oszlopaihoz.

A bcp segédprogram rugalmas. A forrásadatok szinte bármilyen strukturált formátumban lehetnek. A formátumfájl jelzi az adatok elrendezését, valamint azt, hogy az adatok bináris vagy karakteralapúak-e. Emellett meghatározza az egyes elemek típusát és hosszát, valamint az adatok elkülönítésének módját. A formátumfájl azt is megadja, hogyan kell a fájl egyes elemeit a tábla oszlopaira leképezni. Fontos, hogy ennek a fájlnak a tartalma helyesen legyen megadva. Ellenkező esetben az adatok importálása sikertelen lehet, vagy az adatok rossz oszlopokba lesznek beolvasva.

Tegyük fel, hogy a következő adatokkal rendelkezik a mydata.csv fájlban, és importálni szeretné ezeket az adatokat a korábban létrehozott MyTable táblába.

Column1,Column2
99,some text
101,some more text
97,another bit of text
87,yet more text
33,a final bit of text

Az első sorban szerepelnek a mezőnevek, amelyek különböznek a táblázat oszlopaitól. Az adatok vesszővel tagoltak, és minden sor új vonal karakterrel végződik. Tartsa szem előtt, hogy a fájlban az oszlopok sorrendje eltérhet a tábláétól. Ebben a példában a tábla első oszlopa numerikus, a második oszlop pedig egy sztring, az alábbiak szerint:

CREATE TABLE MyTable
(
    MyColumn1 INT NOT NULL PRIMARY KEY,
    MyColumn2 VARCHAR(50) NOT NULL
);

A bcp paranccsal formátumfájlt hozhat létre az importáláshoz. A bcp parancs képes formátumfájlt létrehozni az adatbázisban található céltábla sémája alapján. Később módosíthatja a fájlt, hogy igazodjon a forrásfájl adataihoz.

Formátumfájl létrehozásához futtassa az alábbi parancsot. Cserélje le a csúcsos zárójelben lévő kifejezéseket az adatbázisnak, kiszolgálónak, felhasználónévnek és jelszónak megfelelő értékkel:

bcp <database>.dbo.mytable format nul -c -f mytable.fmt -t, -S <server>.database.windows.net -U <username> -P <password>

A bcp segédprogram több paraméterrel is rendelkezik, amelyek a segédprogram működését vezérlik. Megadhatja a következőket:

  • A céltábla (<database>.<schema>.<table>)
  • Az importálandó adatok és az azokkal kapcsolatos információk (format nul -c -f mytable.fmt -t,)
  • Az adatbázis-kapcsolat adatai (-S <server>.database.windows.net -U <username> -P <password>)

A teljes szintaxist és a segédprogram parancssori paramétereit a súgódokumentációban találhatja meg.

A parancs létrehozza a mytable.fmt formátumú fájlt az alábbi tartalommal:

14.0
2
1       SQLCHAR             0       12      ","    1     MyColumn1                                ""
2       SQLCHAR             0       50      "\n"   2     MyColumn2                                SQL_Latin1_General_CP1_CI_AS

Az első sor az SQL Database belső verziószáma. A második sor a forrástábla oszlopainak száma. Az utolsó két sor megmutatja, hogyan legyenek a forrásfájl adatai leképezva ezekbe az oszlopokba.

Mindkét sor egy olyan számmal kezdődik, amely a tábla oszlopszáma. A második mező (SQLCHAR) meghatározza – ha ezt a formátumfájlt használja az adatimportálásra –, hogy a forrásfájl minden mezője karakteres adattípust tartalmaz. A bcp segédprogram megpróbálja átalakítani ezeket az adatokat a tábla megfelelő oszlopának megfelelő típusára. A következő mező (12 és 50) az adatbázis adott oszlopában található adatok hossza. Ne módosítsa ezt a mezőt! A következő két elem („,” és „\n”) sorrendben a mezőhatároló a forrásfájlban, és a sortörést jelölő karakter. A következő oszlop a forrásfájl mezőszáma. Az utolsótól az utolsóig mező (MyColumn1 és MyColumn2) az adatbázis oszlopának neve. Az utolsó mező a használandó rendezés, amely csak az adatbázisban lévő karakteres adatokra vonatkozik.

Bizonyára emlékszik arra, hogy a forrásfájl mezői más sorrendben találhatók az adatbázisban lévő oszlopokhoz képest. Ezért szerkeszteni kell a formátumfájlt, és az alábbiak szerint megváltoztatni a mezőszámokat:

14.0
2
1       SQLCHAR             0       12      ","    2     MyColumn1                                ""
2       SQLCHAR             0       50      "\n"   1     MyColumn2                                SQL_Latin1_General_CP1_CI_AS

A forrásfájl 2. mezőjének adatai az adatbázis első oszlopára lesznek leképezve. Az 1. mező a második oszlopra van leképezve.

Most már importálhatja az adatokat a bcp paranccsal, az alábbi módon:

bcp <database>.dbo.mytable in mydata.csv -f mytable.fmt -S <server>.database.windows.net -U <username> -P <password> -F 2

Az in jelölő azt adja meg, hogy a bcp segédprogramot adatok importálásához használjuk. Az out jelölő használatával egy adatbázisból egy fájlba vihet át adatokat. Az -F 2 jelző azt jelzi, hogy az importálási művelet a forrásfájl 2. sorától induljon. Ne feledje, hogy az első sor fejlécet tartalmaz, nem adatokat.

A parancsnak sikeresen le kell futnia, és az alábbi példákhoz hasonló üzeneteket kell adnia:

Starting copy...

5 rows copied.
Network packet size (bytes): 4096
Clock Time (ms.) Total     : 46     Average : (108.7 rows per sec.)

A kimenet fontos sora az "5 sor másolása". Az importált adatokat tartalmazó forrásfájl sorainak száma. Ha ez a szám más (vagy 0), akkor feltehetően hibás a formátumfájl.

Adatok lekérdezése

Ellenőrizze az importálás sikerességét az adatok lekérdezésével. Ehhez használhatja a lekérdezésszerkesztőt az Azure Portalon. Ha parancssorból szeretne az adatbázishoz kapcsolódni, használhatja a sqlcmd segédprogramot. Mindkét esetben az alábbihoz hasonló SELECT parancsot kell futtatnia:

SELECT *
FROM MyTable;

A következő eredményeknek kell megjelenniük.

The query editor in the Azure portal shows the results of a query.