SqlPackage met gegevens in Parquet-bestanden (preview)
In dit artikel wordt ondersteuning voor SqlPackage behandeld voor interactie met gegevens die zijn opgeslagen in Azure Blob Storage die de Parquet-indeling heeft. Voor SQL Server 2022 en Azure SQL Managed Instance is preview-ondersteuning voor extraheren en publiceren met gegevens in Parquet-bestanden in Azure Blob Storage beschikbaar in SqlPackage 162.1.176 en hoger. Azure SQL Database en SQL Server 2019 en eerder worden niet ondersteund. De importeren en acties exporteren blijven beschikbaar voor SQL Server, Azure SQL Managed Instance en Azure SQL Database. Ondersteuning voor Parquet-bestanden in Azure Blob Storage blijft algemeen beschikbaar voor Azure Synapse Analytics-.
Met het extractieproces van wordt het databaseschema (.dacpac
bestand) op de lokale client geschreven met behulp van SqlPackage, en worden de gegevens in Parquet-indeling naar Azure Blob Storage geschreven. De gegevens worden opgeslagen in afzonderlijke mappen die zijn genoemd met tabellennamen in twee delen.
CETAS- wordt gebruikt voor het schrijven van de bestanden in Azure Blob Storage.
Bij het publiceren met , wordt het databaseschema (.dacpac
-bestand) gelezen vanaf de lokale client die SqlPackage draait, en worden de gegevens naar Azure Blob Storage gelezen of geschreven in Parquet-indeling.
In SQL-databases die worden gehost in Azure, bieden de extract-/publicatiebewerkingen met Parquet-bestanden verbeterde prestaties ten opzichte van import-/exportbewerkingen met .bacpac
bestanden in veel scenario's.
Extraheren (gegevens exporteren)
Om gegevens uit een database te exporteren naar Azure Blob Storage, wordt de SqlPackage-extractie--actie gebruikt met de volgende eigenschappen:
- /p:AzureStorageBlobEndpoint
- /p:AzureStorageContainer
- /p:AzureStorageKey of /p:AzureSharedAccessSignatureToken
De toegang van de database tot de blobopslagcontainer wordt geautoriseerd via een opslagaccountsleutel. Het databaseschema (.dacpac-bestand) wordt geschreven naar de lokale client waarop SqlPackage wordt uitgevoerd en de gegevens worden geschreven naar Azure Blob Storage in Parquet-indeling.
De parameter /p:AzureStorageRootPath
is optioneel, waarmee het pad naar de opslaghoofdmap in de container wordt ingesteld. Zonder deze eigenschap wordt het pad standaard ingesteld op servername/databasename/timestamp/
. Gegevens worden opgeslagen in afzonderlijke mappen die zijn genoemd naar tabelnamen met twee delen. Het aantal bestanden dat per tabel is gemaakt, is afhankelijk van de MAXDOP en beschikbare SQL-kernen op het moment van de export.
Ten slotte geeft de eigenschap /p:TableData
aan welke tabellen hun gegevens hebben geƫxporteerd. Geef de tabelnaam op met of zonder de haken rond de naamonderdelen in de notatie schema_name.table_identifier. Deze eigenschap kan meerdere keren worden opgegeven om meerdere tabellen aan te geven.
Voorbeeld
In het volgende voorbeeld wordt een database met de naam databasename
opgehaald van een server met de naam yourserver
naar een lokaal bestand met de naam databaseschema.dacpac
in de huidige map. De gegevens worden naar een container geschreven met de naam containername
in een opslagaccount met de naam storageaccount
met behulp van een opslagaccountsleutel met de naam storageaccountkey
. De gegevens worden naar het standaardpad van servername/databasename/timestamp/
in de container geschreven.
SqlPackage /Action:Extract /SourceServerName:yourserver /SourceDatabaseName:databasename /TargetFile:databaseschema.dacpac /p:AzureStorageBlobEndpoint=https://storageaccount.blob.core.windows.net /p:AzureStorageContainer=containername /p:AzureStorageKey=storageaccountkey
Zie SqlPackage-extract voor meer voorbeelden van beschikbare verificatietypen.
Publiceren (gegevens importeren)
Als u gegevens uit Parquet-bestanden in Azure Blob Storage naar een database wilt importeren, wordt de actie SqlPackage- gebruikt met de volgende eigenschappen:
- /p:AzureStorageBlobEndpoint
- /p:AzureStorageContainer
- /p:AzureStorageRootPath
- /p:AzureStorageKey of /p:AzureSharedAccessSignatureToken
Toegang voor publiceren kan worden geautoriseerd via een opslagaccountsleutel of een SAS-token (Shared Access Signature). Het databaseschema (.dacpac-bestand) wordt gelezen vanuit de lokale client waarop SqlPackage wordt uitgevoerd en de gegevens worden gelezen uit Azure Blob Storage in Parquet-indeling.
Voorbeeld
In het volgende voorbeeld wordt een database met de naam databasename
gepubliceerd naar een server met de naam yourserver
van een lokaal bestand met de naam databaseschema.dacpac
in de huidige map. De gegevens worden gelezen uit een container met de naam containername
in een opslagaccount met de naam storageaccount
met behulp van een opslagaccountsleutel met de naam storageaccountkey
. De gegevens worden gelezen uit afzonderlijke mappen voor elke tabel onder het pad yourserver/databasename/10-19-2023_11-09-56/
in de container.
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/"
Zie SqlPackage publiceren voor meer voorbeelden van beschikbare verificatietypen.
Beperkingen
Polybase
Polybase- is vereist voor SqlPackage-bewerkingen met Parquet-bestanden. De volgende query kan worden gebruikt om te controleren of Polybase is ingeschakeld:
// 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)
Mogelijk moet u Polybase of Polybase exportinschakelen. Voor het inschakelen van Polybase in Azure SQL Managed Instance is PowerShell of Azure CLI-vereist. Het is raadzaam om te evalueren of het inschakelen van Polybase geschikt is voor uw omgeving voordat u configuratiewijzigingen aanbrengt.
Tabel- en gegevenstypen
Gegevenstypen die worden ondersteund door CETAS- worden ondersteund voor het extraheren en publiceren van bewerkingen met Parquet-bestanden.
Grootboektabellen zijn ingeschakeld voor het extraheren en publiceren van bewerkingen met Parquet-bestanden.
Gegevens die zijn opgeslagen met Always Encrypted, worden niet ondersteund voor het extraheren en publiceren van bewerkingen met Parquet-bestanden.
Het controleren van de database op niet-ondersteunde typen wordt gedaan voordat deze door SqlPackage naar Parquet wordt geƫxtraheerd, maar u kunt uw database snel onderzoeken met T-SQL. De volgende voorbeeldquery retourneert een resultatenset met typen en tabellen met typen die niet worden ondersteund voor het schrijven naar Parquet-bestanden.
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',
'bigint',
'tinyint',
'smallint',
'int',
'bigint',
'bit',
'money',
'smallmoney',
'uniqueidentifier'
)
Volgende stappen
- Meer informatie over -extract
- Meer informatie over Publiceren
- Meer informatie over Azure Blob Storage-
- Meer informatie over Sas - (Shared Access Signature) van Azure Storage
- Meer informatie over Azure Storage Accountsleutels