Übung: Laden von Daten in Azure SQL-Datenbank
Beim Massenladen von Daten stammen diese Daten aus bestimmten Quellen. In Azure ist es üblich, Daten in Azure Blob Storage zu speichern oder zu sichern. Blob Storage ist für die relativ konstengünstige Speicherung großer Mengen unstrukturierter Daten optimiert.
In diesem Szenario empfängt Adventure Works Cycles basierend auf der Identifikationsnummer Rückgabedaten aus dem Speicher. Diese Daten werden in DAT-Dateien gespeichert, die dann mithilfe von Push in den Azure-Blobspeicher übertragen werden. Sobald sich die Daten im Blobspeicher befinden, benötigt Azure SQL eine Möglichkeit für den Zugriff darauf. Hierfür können Sie eine externe Datenquelle erstellen, die Zugriff auf das Speicherkonto hat. Sie können den Zugriff auf dieses Speicherkonto über Microsoft Entra ID, die Autorisierung mit einem gemeinsam verwendeten Schlüssel oder mit einer Shared Access Signature (SAS) steuern.
In dieser Übung wird ein Szenario für das Massenladen von Daten aus dem Azure-Blobspeicher in Azure SQL-Datenbank erläutert. Der Ansatz verwendet T-SQL und Shared Access Signatures (SAS).
Es gibt zwei Möglichkeiten, diese Übung abzuschließen:
sqlcmd
in Azure Cloud Shell- SQL-Notebooks in Azure Data Studio
Beide Übungen verwenden dieselben Befehle und Inhalte, sodass Sie frei wählen können.
Option 1: sqlcmd
in Azure Cloud Shell
sqlcmd
ist ein Befehlszeilentool, mit dem Sie über die Befehlszeile mit SQL Server und Azure SQL interagieren können. In dieser Übung verwenden Sie sqlcmd
in der PowerShell-Instanz von Azure Cloud Shell. sqlcmd
wird standardmäßig installiert, sodass das Programm in Azure Cloud Shell einfach zu verwenden ist.
Aufgrund der Konfiguration von Azure Cloud Shell für Bash müssen Sie zunächst den Terminalmodus ändern, indem Sie den folgenden Befehl in Azure Cloud Shell ausführen.
TERM=dumb
Führen Sie den folgenden Befehl im integrierten Terminal aus, nachdem Sie den Servernamen und das Kennwort geändert haben.
sqlcmd -S <server name>.database.windows.net -P <password> -U cloudadmin -d AdventureWorks
Erstellen Sie eine Tabelle und ein Schema, in die die Daten geladen werden. Für diesen Vorgang wird T-SQL verwendet. Führen Sie das folgende Skript im Terminal aus, nachdem Sie eine Verbindung mit der Datenbank hergestellt haben:
IF SCHEMA_ID('DataLoad') IS NULL EXEC ('CREATE SCHEMA DataLoad') CREATE TABLE DataLoad.store_returns ( sr_returned_date_sk bigint, sr_return_time_sk bigint, sr_item_sk bigint, sr_customer_sk bigint, sr_cdemo_sk bigint, sr_hdemo_sk bigint, sr_addr_sk bigint, sr_store_sk bigint, sr_reason_sk bigint, sr_ticket_number bigint, sr_return_quantity integer, sr_return_amt float, sr_return_tax float, sr_return_amt_inc_tax float, sr_fee float, sr_return_ship_cost float, sr_refunded_cash float, sr_reversed_charge float, sr_store_credit float, sr_net_loss float ); GO
Tipp
Nach den T-SQL-Anweisungen sehen Sie einen Zahleneintrag. Er stellt jeweils eine Zeile der T-SQL-Eingabe dar. Der vorstehende Befehl endet beispielsweise mit
26
. Vergessen Sie nicht, nach diesen Zeilen die EINGABETASTE zu drücken.Sie wissen, dass der Befehl beendet ist, wenn
1>
wieder angezeigt wird. Dies gibt an, dasssqlcmd
bereit für die nächste Zeile der nächsten T-SQL-Eingabe ist.Erstellen Sie dann einen Hauptschlüssel:
CREATE MASTER KEY ENCRYPTION BY PASSWORD='MyComplexPassword00!'; GO
Ein Hauptschlüssel ist erforderlich, um einen
DATABASE SCOPED CREDENTIAL
-Wert zu erstellen, da der Blobspeicher nicht so konfiguriert ist, dass er öffentlichen (anonymen) Zugriff zulässt. Die Anmeldeinformationen beziehen sich auf das Blob-Speicherkonto. Der Datenteil gibt den Container der Speicherrückgabedaten an.Sie verwenden eine Shared Access Signature (SAS) als Identität, die von Azure SQL interpretiert werden kann. Das Geheimnis ist das SAS-Token, das Sie aus dem Blobspeicherkonto generieren können. In diesem Beispiel wird das SAS-Token für ein Speicherkonto bereitgestellt, auf das Sie keinen Zugriff haben, sodass Sie nur auf die Speicherrückgabedaten zugreifen können.
CREATE DATABASE SCOPED CREDENTIAL [https://azuresqlworkshopsa.blob.core.windows.net/data/] WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = 'st=2020-09-28T22%3A05%3A27Z&se=2030-09-29T22%3A05%3A00Z&sp=rl&sv=2018-03-28&sr=c&sig=52WbuSIJCWyjS6IW6W0ILfIpqh4wLMXmOlifPyOetZI%3D'; GO
Erstellen Sie eine externe Datenquelle für den Container:
CREATE EXTERNAL DATA SOURCE dataset WITH ( TYPE = BLOB_STORAGE, LOCATION = 'https://azuresqlworkshopsa.blob.core.windows.net/data', CREDENTIAL = [https://azuresqlworkshopsa.blob.core.windows.net/data/] ); GO
Massenhinzufügen einer der Speicherrückgabedateien. Führen Sie das folgende Skript aus, und überprüfen Sie während der Ausführung die Kommentare:
SET NOCOUNT ON -- Reduce network traffic by stopping the message that shows the number of rows affected BULK INSERT DataLoad.store_returns -- Table you created in step 3 FROM 'dataset/store_returns/store_returns_1.dat' -- Within the container, the location of the file WITH ( DATA_SOURCE = 'dataset' -- Using the external data source from step 6 ,DATAFILETYPE = 'char' ,FIELDTERMINATOR = '\|' ,ROWTERMINATOR = '\|\n' ,BATCHSIZE=100000 -- Reduce network traffic by inserting in batches , TABLOCK -- Minimize number of log records for the insert operation ); GO
Überprüfen Sie, wie viele Zeilen in die Tabelle eingefügt wurden:
SELECT COUNT(*) FROM DataLoad.store_returns; GO
Wenn alles ordnungsgemäß ausgeführt wurde, sollte
2807797
zurückgegeben werden.
Dieser Code ist ein einfaches Beispiel für das Einfügen von Daten aus einem Blobspeicher in Azure SQL-Datenbank. Wenn Sie die Übung noch mal ausführen möchten, führen Sie den folgenden Code aus, um die Vorgänge zurückzusetzen:
DROP EXTERNAL DATA SOURCE dataset;
DROP DATABASE SCOPED CREDENTIAL [https://azuresqlworkshopsa.blob.core.windows.net/data/];
DROP TABLE DataLoad.store_returns;
DROP MASTER KEY;
GO
Option 2: SQL-Notebooks in Azure Data Studio
Für diese Aktivität verwenden Sie das Notebook namens LoadData.ipynb. Sie finden es im Verzeichnis \mslearn-azure-sql-fundamentals\02-DeployAndConfigure\loaddata auf Ihrem Gerät. Öffnen Sie diese Datei in Azure Data Studio, um diese Übung abzuschließen, und kehren Sie dann hierher zurück:
Wenn Sie die Übung aus irgendeinem Grund nicht abschließen können, können Sie die Ergebnisse in der entsprechenden Notebook-Datei auf GitHub überprüfen.