SqlPackage с данными в файлах Parquet (предварительная версия)
В этой статье рассматривается поддержка SqlPackage для взаимодействия с данными, хранящимися в Azure Blob Storage, которые находятся в формате Parquet. Для SQL Server 2022 и Управляемого экземпляра SQL Azure предварительная версия извлечения и публикации с данными в файлах Parquet в хранилище BLOB-объектов Azure доступна в SqlPackage 162.1.176 и более поздних версиях. База данных SQL Azure и SQL Server 2019 и более ранние версии не поддерживаются. Действия импорта и экспорта по-прежнему доступны для SQL Server, Управляемого экземпляра SQL Azure и базы данных SQL Azure. Поддержка файлов Parquet в хранилище BLOB-объектов Azure по-прежнему общедоступна для Azure Synapse Analytics.
При извлечении ссхема базы данных (.dacpac
файл) записывается в локальный клиент, запускающий SqlPackage, а данные сохраняются в хранилище Azure Blob в формате Parquet. Данные хранятся в отдельных папках с двумя именами таблиц.
CETAS используется для записи файлов в Azure Blob Storage.
При публикации схема базы данных (.dacpac
-файл) считывается из локального клиента, на котором работает SqlPackage, и данные считываются из хранилища BLOB-объектов Azure или записываются в него в формате Parquet.
В базах данных SQL, размещенных в Azure, операции извлечения и публикации с файлами Parquet обеспечивают более высокую производительность по сравнению с операциями импорта и экспорта с помощью .bacpac
-файлов во многих сценариях.
Извлечение (экспорт данных)
Чтобы экспортировать данные из базы данных в хранилище Blob-объектов Azure, используется действие извлечения SqlPackage со следующими свойствами:
- /p:AzureStorageBlobEndpoint
- /p:AzureStorageContainer
- /p:AzureStorageKey или /p:AzureSharedAccessSignatureToken
Доступ базы данных к контейнеру BLOB-хранилища разрешен с помощью ключа учетной записи хранения. Схема базы данных (DACPAC-файл) записывается в локальный клиент, на котором выполняется SqlPackage, и данные записываются в хранилище BLOB-объектов Azure в формате Parquet.
Параметр /p:AzureStorageRootPath
необязателен, который задает корневой путь хранилища в контейнере. Без этого свойства путь по умолчанию используется для servername/databasename/timestamp/
. Данные хранятся в отдельных папках с двумя именами таблиц. Количество файлов, созданных для каждой таблицы, зависит от MAXDOP и доступных ядер SQL во время экспорта.
Наконец, свойство /p:TableData
указывает, какие таблицы экспортируют данные. Укажите имя таблицы со скобками или без них, окружающими части имени, в формате schema_name.table_identifier. Это свойство может быть указано несколько раз, чтобы указать несколько таблиц.
Пример
В следующем примере извлекается база данных с именем databasename
с сервера с именем yourserver
в локальный файл с именем databaseschema.dacpac
в текущем каталоге. Данные записываются в контейнер с именем containername
в учетной записи хранения с именем storageaccount
с помощью ключа учетной записи хранения с именем storageaccountkey
. Данные записываются в путь по умолчанию servername/databasename/timestamp/
в контейнере.
SqlPackage /Action:Extract /SourceServerName:yourserver /SourceDatabaseName:databasename /TargetFile:databaseschema.dacpac /p:AzureStorageBlobEndpoint=https://storageaccount.blob.core.windows.net /p:AzureStorageContainer=containername /p:AzureStorageKey=storageaccountkey
Дополнительные примеры доступных типов проверки подлинности см. в извлечении SqlPackage.
Публикация (импорт данных)
Чтобы импортировать данные из файлов Parquet в Azure Blob Storage в базу данных, используется действие SqlPackage "опубликовать" со следующими свойствами:
- /p:AzureStorageBlobEndpoint
- /p:AzureStorageContainer
- /p:AzureStorageRootPath
- /p:AzureStorageKey или /p:AzureSharedAccessSignatureToken
Доступ к публикации можно авторизовать с помощью ключа учетной записи для хранения или маркера разделенного доступа (SAS). Схема базы данных (DACPAC-файл) считывается из локального клиента, работающего под управлением SqlPackage, и данные считываются из хранилища BLOB-объектов Azure в формате Parquet.
Пример
В следующем примере база данных с именем databasename
публикуется на сервере с именем yourserver
из локального файла с именем databaseschema.dacpac
в текущем каталоге. Данные считываются из контейнера с именем containername
в учетной записи хранения с именем storageaccount
с помощью ключа учетной записи хранения с именем storageaccountkey
. Данные считываются из отдельных папок для каждой таблицы по пути yourserver/databasename/10-19-2023_11-09-56/
в контейнере.
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/"
См. публикацию SqlPackage для получения дополнительных примеров доступных типов проверки подлинности в.
Ограничения
Polybase
Polybase требуется для операций SqlPackage с файлами Parquet. Следующий запрос можно использовать для проверки включения 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)
Возможно, потребуется включить Polybase или Polybase export. Для включения Polybase в Управляемом экземпляре SQL Azure требуется PowerShell или Azure CLI. Рекомендуется оценить, подходит ли включение Polybase для вашей среды перед внесением изменений в конфигурацию.
Типы таблиц и данных
Типы данных, поддерживаемые CETAS, можно использовать в операциях извлечения и публикации с файлами Parquet.
Таблицы Ledger доступны для операций извлечения и публикации с файлами Parquet.
Данные, хранящиеся в Always Encrypted, не поддерживаются для операций извлечения и публикации с файлами Parquet.
Проверка базы данных для неподдерживаемых типов выполняется до извлечения в Parquet by SqlPackage, но вы можете быстро изучить базу данных с помощью T-SQL. В следующем примере запроса возвращается результирующий набор типов и таблиц с типами, которые не поддерживаются для записи в файлы 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',
'bigint',
'tinyint',
'smallint',
'int',
'bigint',
'bit',
'money',
'smallmoney',
'uniqueidentifier'
)
Дальнейшие действия
- Узнайте больше о экстракте
- Узнайте больше о публикации
- Дополнительные сведения о хранилище BLOB-объектов Azure
- Дополнительные сведения о подписанном URL-адресе службы хранилища Azure (SAS)
- Узнайте больше о ключах учетной записи хранения Azure