Sdílet prostřednictvím


SqlPackage s daty v souborech Parquet (náhled)

Tento článek popisuje podporu SqlPackage pro interakci s daty uloženými ve službě Azure Blob Storage, která je ve formátu Parquet.

S extraktem se schéma databáze (soubor.dacpac) zapíše do místního klienta, na kterém běží SqlPackage, a data se zapíšou do Azure Blob Storage ve formátu Parquet. Data se ukládají do jednotlivých složek s názvy dvoudílných tabulek. FUNKCE CREATE EXTERNAL TABLE AS SELECT (CETAS) slouží k zápisu souborů ve službě Azure Blob Storage.

Při publikování se schéma databáze (soubor.dacpac) načítá z místního klienta, na kterém běží SqlPackage, a data se čtou nebo zapisují do služby Azure Blob Storage ve formátu Parquet.

Pro SQL Server 2022 a Azure SQL Managed Instance je v režimu Preview dostupná podpora pro extrakci a publikování s daty v souborech Parquet uložených v Azure Blob Storage v SqlPackage 162.1.176 a vyšší. Pro Azure SQL Database je k dispozici podpora publikování ve verze Preview v SqlPackage 170.1.61 a vyšší. SQL Server 2019 a starší se nepodporuje. Akce importu a exportu jsou nadále dostupné pro SQL Server, azure SQL Managed Instance a Azure SQL Database. Podpora souborů Parquet ve službě Azure Blob Storage je nadále obecně dostupná pro Azure Synapse Analytics.

V databázích SQL hostovaných v Azure nabízejí operace extrakce a publikování se soubory Parquet vyšší výkon při operacích importu a exportu s .bacpac soubory v mnoha scénářích.

Výpis (export dat)

K exportu dat z databáze do služby Azure Blob Storage se použije akce SqlPackage extrakt s následujícími vlastnostmi:

  • /p:AzureStorageBlobEndpoint
  • /p:AzureStorageContainer
  • /p:AzureSharedAccessSignatureToken nebo /p:AzureStorageKey (nepodporuje se pro použití s SQL Serverem)

Snímek obrazovky s přehledem extraktu dat z databáze se souborem .dacpac zapsaným do prostředí SqlPackage a daty z tabulky zapsanými do služby Azure Blob Storage v parquetových souborech

Pro zajištění přístupu databáze ke kontejneru úložiště objektů blob je použit klíč účtu úložiště. Schéma databáze (soubor .dacpac) je zapsáno do místního klienta, na kterém běží SqlPackage, a data se zapisuje do služby Azure Blob Storage ve formátu Parquet.

Parametr /p:AzureStorageRootPath je volitelný, což nastaví kořenovou cestu úložiště v rámci kontejneru. Bez této vlastnosti se cesta ve výchozím nastavení použije jako servername/databasename/timestamp/. Data se ukládají do jednotlivých složek s názvy dvoudílných tabulek. Počet souborů vytvořených pro tabulku závisí na maxDOP a dostupných jádrech SQL v době exportu.

Nakonec vlastnost /p:TableData určuje, které tabulky mají export dat. Zadejte název tabulky s nebo bez hranatých závorek obklopujících části názvu ve formátu schema_name.table_identifier. Tuto vlastnost lze zadat vícekrát, aby bylo možné označit více tabulek.

Example

Následující příklad extrahuje databázi s názvem databasename ze serveru s názvem yourserver do místního souboru s názvem databaseschema.dacpac v aktuálním adresáři. Data se zapisuje do kontejneru s názvem containername v účtu úložiště s názvem storageaccount pomocí klíče účtu úložiště s názvem storageaccountkey. Data se zapíšou do výchozí cesty servername/databasename/timestamp/ v kontejneru.

SqlPackage /Action:Extract /SourceServerName:yourserver /SourceDatabaseName:databasename /TargetFile:databaseschema.dacpac /p:AzureStorageBlobEndpoint=https://storageaccount.blob.core.windows.net /p:AzureStorageContainer=containername /p:AzureStorageKey=storageaccountkey

Další příklady dostupných typů ověřování najdete v části Extrakce SqlPackage.

Publikování (import dat)

Pokud chcete importovat data ze souborů Parquet v Azure Blob Storage do databáze, použije se akce SqlPackage publikování s následujícími vlastnostmi:

  • /p:AzureStorageBlobEndpoint
  • /p:AzureStorageContainer
  • /p:AzureStorageRootPath
  • /p:AzureSharedAccessSignatureToken nebo /p:AzureStorageKey (nepodporuje se pro použití s SQL Serverem)

Přístup k publikování je možné autorizovat prostřednictvím klíče účtu úložiště nebo tokenu sdíleného přístupového podpisu (SAS). Schéma databáze (soubor .dacpac) se načítá z místního klienta, na kterém běží SqlPackage, a data se čtou ze služby Azure Blob Storage ve formátu Parquet.

Example

Následující příklad publikuje databázi s názvem databasename na server s názvem yourserver z místního souboru s názvem databaseschema.dacpac v aktuálním adresáři. Data se čtou z kontejneru s názvem containername v účtu úložiště s názvem storageaccount pomocí klíče účtu úložiště s názvem storageaccountkey. Data se čtou z jednotlivých složek pro každou tabulku pod cestou yourserver/databasename/10-19-2023_11-09-56/ v kontejneru.

SqlPackage /Action:Publish /SourceFile:databaseschema.dacpac /TargetServerName:yourserver /TargetDatabaseName:databasename /p:AzureStorageBlobEndpoint=https://storageaccount.blob.core.windows.net /p:AzureStorageContainer=containername  /p:AzureStorageKey=storageaccountkey /p:AzureStorageRootPath="yourserver/databasename/10-19-2023_11-09-56/"

Další příklady dostupných typů ověřování vizte v části SqlPackage publish.

Limitations

PolyBase

Pro SQL Server a Azure SQL Managed Instance je PolyBase vyžadováno pro operace SqlPackage se soubory Parquet. Pomocí následujícího dotazu můžete zkontrolovat, jestli je povolená funkce PolyBase:

// configuration_id = 16397 is 'allow polybase export'
// configuration_id = 16399 is 'polybase enabled'
SELECT configuration_id, value_in_use FROM sys.configurations
WHERE configuration_id IN (16397, 16399)

Možná budete muset povolit export PolyBase nebo PolyBase. Povolení PolyBase ve službě Azure SQL Managed Instance vyžaduje PowerShell nebo Azure CLI. Před provedením změn konfigurace byste měli vyhodnotit, jestli je povolení PolyBase pro vaše prostředí vhodné.

Tabulky a datové typy

Většina datových typů se podporuje pro operace extrakce a publikování se soubory Parquet. Tabulky s nepodporovanými datovými typy mají za následek, že data pro tyto tabulky jsou exportována do .dacpac souboru místo ve formátu Parquet. Podporují se následující datové typy a zapisují se do souborů Parquet ve službě Azure Blob Storage:

  • char
  • varchar
  • nchar
  • nvarchar
  • text
  • ntext
  • decimal
  • numeric
  • float
  • real
  • bit
  • tinyint
  • smallint
  • int
  • bigint
  • smallmoney
  • money
  • smalldate
  • smalldatetime
  • date
  • datetime
  • datetime2
  • datetimeoffset
  • time
  • uniqueidentifier
  • timestamp
  • rowversion
  • binary
  • varbinary
  • image
  • xml
  • json
  • vector

Účetní tabulky jsou povolené pro operace extrakce a publikování s použitím souborů Parquet.

Data uložená pomocí funkce Always Encrypted se nepodporují pro operace extrakce a publikování se soubory Parquet.

Databázi můžete prozkoumat pomocí T-SQL a zjistit datové typy, které by byly zapsány do souboru .dacpac, místo aby byly přímo zapsány do souborů Parquet na Azure Blob Storage. Následující ukázkový dotaz vrátí sadu výsledků typů a tabulek s typy, které nejsou podporovány pro zápis do souborů Parquet.

SELECT DISTINCT C.DATA_TYPE, C.TABLE_SCHEMA, C.TABLE_NAME 
FROM INFORMATION_SCHEMA.TABLES T
INNER JOIN INFORMATION_SCHEMA.COLUMNS C
    ON T.TABLE_SCHEMA = C.TABLE_SCHEMA 
    AND T.TABLE_NAME = C.TABLE_NAME
    AND T.TABLE_TYPE = 'BASE TABLE'
WHERE C.DATA_TYPE NOT IN (
    'binary',
    'varbinary',
    'char',
    'varchar',
    'nchar',
    'nvarchar',
    'smalldate',
    'smalldatetime',
    'date',
    'datetime',
    'datetime2',
    'datetimeoffset',
    'time',
    'decimal',
    'numeric',
    'float',
    'real',
    'tinyint',
    'smallint',
    'int',
    'bigint',
    'bit',
    'money',
    'smallmoney',
    'uniqueidentifier',
    'timestamp',
    'rowversion',
    'text',
    'ntext',
    'image',
    'xml',
    'json',
    'vector'
);