Aracılığıyla paylaş


SqlPackage ile Parquet dosyalarındaki veriler (önizleme)

Bu makale, Parquet biçimindeki Azure Blob Depolama'da depolanan verilerle etkileşime yönelik SqlPackage desteğini kapsar. SQL Server 2022 ve Azure SQL Yönetilen Örneği için, Azure Blob Depolama'daki Parquet dosyalarındaki verilerle ayıklama ve yayımlama önizleme desteği, SqlPackage 162.1.176 ve üzeri sürümlerde kullanılabilir. Azure SQL Veritabanı ve SQL Server 2019 ve önceki sürümleri desteklenmez. içeri aktarma ve dışarı aktarma eylemleri SQL Server, Azure SQL Yönetilen Örneği ve Azure SQL Veritabanı için kullanılabilir olmaya devam ediyor. Azure Blob Depolama'da Parquet dosyaları desteği, Azure Synapse Analytics için genel kullanımda olmaya devam ediyor.

ayıklandığında, veritabanı şeması (.dacpac dosyası) SqlPackage çalıştıran yerel istemciye yazılır ve veriler Parquet biçiminde Azure Blob Depolama'ya yazılır. Veriler, iki bölümlü tablo adlarıyla adlı tek tek klasörlerde depolanır. CREATE EXTERNAL TABLE AS SELECT (CETAS), Azure Blob Depolama'da dosyaları yazmak için kullanılır.

yayımla, veritabanı şeması (.dacpac dosyası) SqlPackage çalıştıran yerel istemciden okunur ve veriler Parquet biçiminde Azure Blob Depolama'ya yazılır veya buradan okunur.

Azure'da barındırılan SQL veritabanlarında Parquet dosyalarıyla yapılan ayıklama/yayımlama işlemleri, birçok senaryoda .bacpac dosyalarıyla içeri/dışarı aktarma işlemlerine göre gelişmiş performans sunar.

Veri dışa aktarma

Veritabanındaki verileri Azure Blob Depolama'ya aktarmak için SqlPackage ayıklama eylemi aşağıdaki özelliklerle kullanılır:

  • /p:AzureStorageBlobEndpoint
  • /p:AzureStorageContainer
  • /p:AzureSharedAccessSignatureToken veya /p:AzureStorageKey (SQL Server ile kullanım için desteklenmez)

SqlPackage ortamına yazılmış bir .dacpac dosyası ve parquet dosyalarında Azure Blob Depolama'ya yazılan tablo verilerini içeren bir veritabanından veri ayıklama özetinin ekran görüntüsü.

Veritabanının blob depolama kapsayıcısına erişmesi için erişim, bir depolama hesabı anahtarı aracılığıyla yetkilendirilmiştir. Veritabanı şeması (.dacpac dosyası) SqlPackage çalıştıran yerel istemciye yazılır ve veriler Parquet biçiminde Azure Blob Depolama'ya yazılır.

/p:AzureStorageRootPath parametresi, kapsayıcı içindeki depolama kök yolunu ayarlayan isteğe bağlıdır. Bu özellik olmadan, yol varsayılan olarak servername/databasename/timestamp/şeklindedir. Veriler, iki bölümlü tablo adlarıyla adlandırılan tek tek klasörlerde depolanır. Tablo başına oluşturulan dosyaların sayısı, dışarı aktarma sırasında MAXDOP ve kullanılabilir SQL çekirdeklerine bağlıdır.

Son olarak, /p:TableData özelliği verilerinin dışarı aktarıldığı tabloları belirtir. Ad bölümlerini schema_name.table_identifier biçiminde çevreleyen köşeli ayraçlar içeren veya olmayan tablo adını belirtin. Bu özellik, birden çok tabloyu göstermek için birden çok kez belirtilebilir.

Örnek

Aşağıdaki örnek, databasename adlı bir sunucudan yourserver adlı bir veritabanını geçerli dizindeki databaseschema.dacpac adlı yerel dosyaya ayıklar. Veriler, containernameadlı bir depolama hesabı anahtarı kullanılarak storageaccount adlı depolama hesabında storageaccountkey adlı bir kapsayıcıya yazılır. Veriler kapsayıcıdaki varsayılan servername/databasename/timestamp/ yoluna yazılır.

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

Kullanılabilir kimlik doğrulama türlerine ilişkin diğer örnekler için SqlPackage çıkarma bölümüne bakın.

Yayımlama (verileri içeri aktarma)

Azure Blob Depolama'daki Parquet dosyalarından veritabanına veri aktarmak için SqlPackage yayımlama eylemi aşağıdaki özelliklerle kullanılır:

  • /p:AzureStorageBlobEndpoint
  • /p:AzureStorageContainer
  • /p:AzureStorageRootPath
  • /p:AzureSharedAccessSignatureToken veya /p:AzureStorageKey (SQL Server ile kullanım için desteklenmez)

Yayımlama erişimi bir depolama hesabı anahtarı veya paylaşılan erişim imzası (SAS) belirteci aracılığıyla yetkilendirilebilir. Veritabanı şeması (.dacpac dosyası) SqlPackage çalıştıran yerel istemciden okunur ve veriler Azure Blob Depolama'dan Parquet biçiminde okunur.

Örnek

Aşağıdaki örnek, geçerli dizindeki databasename adlı yerel dosyadan yourserver adlı bir sunucuya databaseschema.dacpac adlı bir veritabanı yayımlar. Veriler, containernameadlı bir depolama hesabı anahtarı kullanılarak storageaccount adlı depolama hesabında storageaccountkey adlı bir kapsayıcıdan okunur. Veriler, kapsayıcıdaki yourserver/databasename/10-19-2023_11-09-56/ yolunun altındaki tablo başına tek tek klasörlerden okunur.

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/"

Daha fazla kimlik doğrulama türü örneği için SqlPackage yayınla bölümüne bakın.

Sınırlama

PolyBase

Parquet dosyalarıyla SqlPackage işlemleri için PolyBase gereklidir. PolyBase'in etkinleştirilip etkinleştirilmediğini denetlemek için aşağıdaki sorgu kullanılabilir:

// 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 veya PolyBase dışarı aktarmayı etkinleştirmeniz gerekebilir. Azure SQL Yönetilen Örneğinde PolyBase'in etkinleştirilmesi için PowerShell veya Azure CLI gerekir. Yapılandırma değişiklikleri yapmadan önce PolyBase'i etkinleştirmenin ortamınız için doğru olup olmadığını değerlendirmeniz gerekir.

Tablo ve veri türleri

Veri türlerinin çoğu Parquet dosyalarıyla ayıklama ve yayımlama işlemleri için desteklenir. Desteklenmeyen veri türlerine sahip tablolar, tablo verilerinin Parquet formatı yerine .dacpac dosyasına aktarılmasına neden olur. Aşağıdaki veri türleri desteklenir ve Azure Blob Depolama'daki Parquet dosyalarına yazılır:

  • Char
  • varchar
  • nchar
  • nvarchar
  • Metin
  • ntext
  • ondalık
  • Sayısal
  • yüzmek
  • Gerçek
  • bit
  • tinyint
  • smallint
  • Int
  • büyük
  • küçük para
  • para
  • smallDate
  • smalldatetime
  • tarih
  • tarih ve saat
  • datetime2
  • datetimeoffset
  • zaman
  • benzersiz tanımlayıcı
  • zaman etiketi
  • Rowversion
  • ikili
  • varbinary
  • görüntü
  • XML
  • json
  • vektör

Kayıt defteri tabloları, Parquet dosyalarıyla ayıklama ve yayımlama işlemleri için etkinleştirilmiştir.

Always Encrypted ile depolanan veriler, Parquet dosyalarıyla ayıklama ve yayımlama işlemleri için desteklenmez.

Doğrudan Azure Blob Depolama'ya yazılan Parquet dosyaları yerine .dacpac dosyasına yazılacak veri türlerini belirlemek için T-SQL ile veritabanınızı inceleyebilirsiniz. Aşağıdaki örnek sorgu, Parquet dosyalarına yazma işlemi için desteklenmeyen türlere ve tablolara sahip bir sonuç listesi döndürür.

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