Поделиться через


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'
)

Дальнейшие действия