Táblák létrehozása, tömeges importálás és adatok lekérdezése
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.
Az Azure Portal menüjében válassza az Erőforrás létrehozása elemet.
Válassza az Adatbázisok, majd az SQL Database elemet.
A parancssori felület használatához futtassa az és
az sql db create
aaz sql server create
parancsokat.A PowerShell használatához futtassa az és
New-AzSqlDatabase
aNew-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.
Í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:
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.