Cvičení – Načtení dat do databáze Azure SQL

Dokončeno

Když hromadně načítáte data, musí tato data odněkud pocházet. V Azure je běžné ukládat nebo ukládat data do služby Azure Blob Storage. Blob Storage je optimalizovaná pro ukládání obrovských objemů nestrukturovaných dat za relativně nízké náklady.

V tomto scénáři získává Adventure Works Cycles vrácená data z úložiště na základě identifikačního čísla úložiště. Tato data jsou uložená v souborech .dat , které se pak nasdílí do služby Azure Blob Storage. Tam potřebuje mít Azure SQL způsob, jak k nim přistupovat. To můžete provést vytvořením externího zdroje dat, který má přístup k danému účtu úložiště. Přístup k ho účtu úložiště můžete řídit prostřednictvím ID Microsoft Entra, autorizace sdíleného klíče nebo sdíleného přístupového podpisu (SAS).

V tomto cvičení prozkoumejte jeden scénář hromadného načítání dat ze služby Azure Blob Storage do služby Azure SQL Database. Přístup používá T-SQL a sdílené přístupové podpisy.

Můžeme postupovat dvěma způsoby:

  • sqlcmd v Azure Cloud Shellu
  • Soubory SQL Notebook v nástroji Azure Data Studio

Obě možnosti nabízejí stejné příkazy a obsah, takže si můžete zvolit tu, která vám vyhovuje.

Možnost 1: sqlcmd v Azure Cloud Shellu

sqlcmd je nástroj pro příkazový řádek, který umožňuje práci s SQL Serverem a Azure SQL pomocí příkazového řádku. V tomto cvičení se používá sqlcmd v instanci PowerShellu služby Azure Cloud Shell. Příkaz sqlcmd je standardně nainstalovaný, takže se s ním v Azure Cloud Shellu snadno pracuje.

  1. Vzhledem ke způsobu, jakým je Služba Azure Cloud Shell pro Bash nakonfigurovaná, musíte nejprve změnit režim terminálu spuštěním následujícího příkazu v Azure Cloud Shellu.

    TERM=dumb
    
  2. Po úpravě názvu serveru a hesla spusťte v integrovaném terminálu následující příkaz.

    sqlcmd -S <server name>.database.windows.net -P <password> -U cloudadmin -d AdventureWorks
    
  3. Vytvořte tabulku a schéma pro načtení dat. Tento proces je jednoduchý jazyk T-SQL. V terminálu spusťte následující skript, který je teď připojený k databázi:

    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
    

    Tip

    Za příkazy T-SQL se zobrazí číselná položka. Představuje každý řádek položky T-SQL. Například předchozí příkaz končí znakem 26. Nezapomeňte za těmito řádky vybrat ENTER .

    Víte, že příkaz se po opětovném zobrazení 1> dokončil, což znamená, že sqlcmd je připravený na první řádek další položky T-SQL.

  4. Dále vytvořte hlavní klíč:

    CREATE MASTER KEY 
    ENCRYPTION BY PASSWORD='MyComplexPassword00!';
    GO
    
  5. K vytvoření DATABASE SCOPED CREDENTIAL hodnoty se vyžaduje hlavní klíč, protože úložiště objektů blob není nakonfigurované tak, aby umožňovalo veřejný (anonymní) přístup. Přihlašovací údaje odkazují na účet úložiště objektů blob. Datová část určuje kontejner pro vrácená data úložiště.

    Jako identitu, kterou Azure SQL ví, jak interpretovat, použijte sdílený přístupový podpis. Tajný kód je token SAS, který můžete vygenerovat z účtu služby Blob Storage. V tomto příkladu máte k dispozici token SAS k účtu úložiště, k němuž nemáte přístup, takže můžete pracovat jen s vrácenými daty z úložiště.

    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
    
  6. Vytvořte externí zdroj dat pro kontejner:

    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
    
  7. Hromadně vložte jeden z vrácených souborů úložiště. Spusťte následující skript a po dokončení zkontrolujte komentáře:

    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
    
  8. Zkontrolujte, kolik řádků bylo vloženo do tabulky:

    SELECT COUNT(*) FROM DataLoad.store_returns;
    GO
    

    Pokud všechno proběhlo správně, měli byste vidět výsledek 2807797.

Tento kód představuje jednoduchý příklad vložení dat z úložiště objektů blob do služby Azure SQL Database. Pokud chcete cvičení znovu projít, spusťte následující kód a resetujte, co jste udělali:

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

Možnost 2: Poznámkové bloky SQL v Nástroji Azure Data Studio

Pro tuto aktivitu použijte poznámkový blok s názvem LoadData.ipynb. Najdete ho v \mslearn-azure-sql-fundamentals\02-DeployAndConfigure\loaddata na vašem zařízení. Otevřete tento soubor v Nástroji Azure Data Studio a dokončete toto cvičení a vraťte se sem.

Pokud z nějakého důvodu nedokážete cvičení dokončit, můžete si výsledky prohlédnout v příslušném souboru Notebook na GitHubu.