Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: SQL Server 2016 (13.x) and later versions
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL database in Microsoft Fabric
Hadoop, Azure Blob Storage, Azure Data Lake Store, OneLake (Microsoft Fabric) veya harici akışlarla ilişkili giriş ve çıkış akışları için harici verileri tanımlayan harici bir dosya formatı nesnesi oluşturur. Dış dosya biçimi oluşturmak, Dış Tablo oluşturmak için önkoşuldur. Dış Dosya Biçimi oluşturarak, dış tablo tarafından başvuruda bulunılan verilerin gerçek düzenini belirtirsiniz. Dış Tablo oluşturmak için bkz. CREATE EXTERNAL TABLE (Transact-SQL).
Aşağıdaki dosya biçimleri desteklenir:
Sınırlandırılmış metin
Microsoft Fabric'teki SQL veritabanı yalnızca sınırlandırılmış metin CSV formatını destekler.
Hive RCFile
Azure Synapse Analytics, Azure SQL Managed Instance, Azure SQL Database, SQL database in Microsoft Fabric veya SQL Server 2022 (16.x) için geçerli değildir.
Hive ORC
Azure Synapse Analytics, Azure SQL Managed Instance, Azure SQL Database, SQL database in Microsoft Fabric veya SQL Server 2022 (16.x) için geçerli değildir.
Parke
JSON
Yalnızca Azure SQL Edge için geçerlidir. Diğer platformlardaki JSON verilerini içeri aktarmak için kullanma
OPENROWSEThakkında bilgi için bkz. Azure Synapse Analytics'te sunucusuz SQL havuzunu kullanarak JSONbelgelerini SQL Server'a aktarma veya JSON dosyalarını sorgulama.Delta
YalnızcaAzure Synapse Analytics, Azure SQL Database, SQL Server 2022 (16.x) ve sonraki sürümlerdeki serverless SQL pool'lara uygulanır. Delta Lake sürüm 1.0'a sorgulayabilirsiniz. Delta Lake 1.2'de sütunları yeniden adlandırma gibi değişiklikler desteklenmediğinden bu yana ortaya çıkmıştır. Delta'nın daha yüksek sürümlerini silme vektörleri, v2 denetim noktaları ve diğer özelliklerle kullanıyorsanız Lakehouses için Microsoft Fabric SQL analiz uç noktası gibi diğer sorgu altyapılarını kullanmayı göz önünde bulundurun.
Transact-SQL söz dizimi kuralları
Sözdizimi
-- Create an external file format for DELIMITED (CSV/TSV) files.
CREATE EXTERNAL FILE FORMAT file_format_name
WITH (
FORMAT_TYPE = DELIMITEDTEXT
[ , FORMAT_OPTIONS ( <format_options> [ ,...n ] ) ]
[ , DATA_COMPRESSION = {
'org.apache.hadoop.io.compress.GzipCodec'
}
]);
<format_options> ::=
{
FIELD_TERMINATOR = field_terminator
| STRING_DELIMITER = string_delimiter
| FIRST_ROW = integer -- Applies to: Azure Synapse Analytics and SQL Server 2022 and later versions
| DATE_FORMAT = datetime_format
| USE_TYPE_DEFAULT = { TRUE | FALSE }
| ENCODING = {'UTF8' | 'UTF16'}
| PARSER_VERSION = {'parser_version'}
}
Tartışmalar
file_format_name
Dış dosya biçimi için bir ad belirtir.
FORMAT_TYPE
Dış verilerin biçimini belirtir.
FORMAT_TYPE = PARKE
Parquet biçimini belirtir.
FORMAT_TYPE = ORC
İyileştirilmiş Satır Sütunlu (ORC) biçimini belirtir. Bu seçenek, dış Hadoop kümesinde Hive sürüm 0.11 veya üzerini gerektirir. Hadoop'ta, ORC dosya biçimi RCFILE dosya biçiminden daha iyi sıkıştırma ve performans sunar.
FORMAT_TYPE = RCFILE, SERDE_METHOD = SERDE_method
Kayıt Sütunlu dosya biçimini (RcFile) belirtir. Bu seçenek bir Hive Seri Hale Getirici ve Seri Durumdan Çıkarıcı (SerDe) yöntemi belirtmenizi gerektirir. Rc dosyalarını sorgulamak için Hadoop'ta Hive/HiveQL kullanıyorsanız bu gereksinim aynıdır. SerDe yönteminin büyük/küçük harfe duyarlı olduğunu unutmayın.
PolyBase'in desteklediği iki SerDe yöntemiyle RCFile belirtme örnekleri.
FORMAT_TYPE = RCFILE, SERDE_METHOD = 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe'FORMAT_TYPE = RCFILE, SERDE_METHOD = 'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe'
FORMAT_TYPE = DELIMITEDTEXT
Sütun ayırıcıları olan bir metin formatı belirler, yani alan sonlayıcıları.
FORMAT_TYPE = JSON
Bir JSON biçimi belirtir. Yalnızca Azure SQL Edge için geçerlidir.
FORMAT_TYPE = DELTA
Delta Lake biçimini belirtir. Azure Synapse Analytics ve SQL Server 2022 (16.x) içindeki sunucusuz SQL havuzları için geçerlidir.
FORMAT_OPTIONS
Opsiyonel. Yalnızca sınırlandırılmış metin veri türleri için.
Yalnızca Azure Synapse Analytics'teki sunucusuz SQL havuzları destekler PARSER_VERSION.
Sunucusuz SQL havuzları seçeneği desteklemez DATE_FORMAT .
DATA_COMPRESSION = data_compression_method
Dış veriler için veri sıkıştırma yöntemini belirtir. Belirtilmediğinde DATA_COMPRESSION , varsayılan değer sıkıştırılmamış verilerdir.
Düzgün çalışabilmek için Gzip sıkıştırılmış dosyalarının dosya uzantısına .gz sahip olması gerekir.
Biçim DELIMITEDTEXT türü şu sıkıştırma yöntemini destekler: DATA_COMPRESSION = org.apache.hadoop.io.compress.GzipCodec
Sınırlandırılmış metin biçimi seçenekleri
Bu bölümde açıklanan biçim seçenekleri isteğe bağlıdır ve yalnızca sınırlandırılmış metin dosyalarına uygulanır.
FIELD_TERMINATOR = field_terminator
Yalnızca sınırlandırılmış metin dosyaları için geçerlidir. Alan sonlandırıcısı, metinle ayrılmış dosyadaki her alanın (sütunun) sonunu işaretleyen bir veya daha fazla karakter belirtir. Varsayılan değer, kanal karakteridir |. Garantili destek için bir veya daha fazla ASCII karakteri kullanmanızı öneririz.
Örnekler:
FIELD_TERMINATOR = '|'FIELD_TERMINATOR = ' 'FIELD_TERMINATOR = ꞌ\tꞌFIELD_TERMINATOR = '~|~'
STRING_DELIMITER
STRING_DELIMITER = *string_delimiter*
Metinsel değerleri metinle ayrılmış dosyaya alan bir karakter belirtir. Varsayılan değer "" boş dizesidir. değeri STRING_DELIMITER işlevdeki FIELDQUOTE seçeneğiyle OPENROWSET BULK işlevsel olarak eşdeğerdir.
Uyarı
Synapse ayrılmış SQL havuzlarındaki Hadoop tabloları, STRING_DELIMITER bir veya daha fazla karakter belirtmenizi sağlar. Sunucusuz SQL havuzunda yalnızca bir karakter kullanabilirsiniz.
Örnekler:
STRING_DELIMITER = '"'STRING_DELIMITER = '0x22'(Çift tırnak onaltılık)STRING_DELIMITER = '*'STRING_DELIMITER = ꞌ,ꞌSTRING_DELIMITER = '0x7E0x7E'(İki tilde, örneğin,~~) - ayrılmış SQL havuzunda desteklenir.
FIRST_ROW = first_row_int
Şunlar için geçerlidir: Azure Synapse Analytics, SQL Server 2022 ve sonraki sürümleri
PolyBase yükü sırasında tüm dosyalarda ilk okunan satır numarasını belirtir. Bu parametre 1 - 15 değerlerini alabilir. Değer iki olarak ayarlanırsa, veriler yüklendiğinde her dosyadaki (üst bilgi satırı) ilk satır atlanır. Satır sonlandırıcılarının (/r/n, /r, /n) varlığına bağlı olarak satırlar atlanır. Dışarı aktarma için bu seçenek kullanıldığında, verilerin veri kaybı olmadan okunabilmesini sağlamak için satırlar eklenir. Değer 2 olarak >ayarlanırsa, dışarı aktarılan ilk satır dış tablonun Sütun adlarıdır.
DATE_FORMAT = datetime_format
Sınırlandırılmış bir metin dosyasında görünebilecek tüm tarih ve saat verileri için özel bir biçim belirtir. Kaynak dosya varsayılan tarih saat biçimlerini kullanıyorsa, bu seçenek gerekli değildir. Dosya başına yalnızca bir özel tarih saat biçimine izin verilir. Dosya başına birden fazla özel tarih saat biçimi belirtemezsiniz. Ancak, her biri dış tablo tanımındaki ilgili veri türü için varsayılan biçimse birden fazla tarih saat biçimi kullanabilirsiniz.
Önemli
PolyBase yalnızca verileri içeri aktarmak için özel tarih biçimini kullanır. Dış dosyaya veri yazmak için özel biçimi kullanmaz.
DATE_FORMAT belirtilmediğinde veya boş dize olduğunda PolyBase aşağıdaki varsayılan biçimleri kullanır:
Tarih saati:
'yyyy-MM-dd HH:mm:ss'Smalldatetime:
'yyyy-MM-dd HH:mm'tarih:
'yyyy-MM-dd'Datetime2:
'yyyy-MM-dd HH:mm:ss'Datetimeoffset:
'yyyy-MM-dd HH:mm:ss'zaman:
'HH:mm:ss'
Önemli
Özel DATE_FORMAT belirtilmesi tüm varsayılan tür biçimlerini geçersiz kılar. Bu, dosyalarınızdaki tüm tarih saat, tarih ve saat hücrelerinde aynı tarih biçimlerine sahip olmanız gerektiği anlamına gelir. geçersiz kılınmış DATE_FORMATile, tarih ve saat değerleriniz farklı biçimde olamaz.
Örnek tarih biçimleri aşağıdaki tabloda verilmiştir:
Tabloyla ilgili notlar:
Yıl, ay ve gün birkaç biçime ve siparişe sahip olabilir. Tabloda yalnızca ymd biçimi gösterilir. Ay bir veya iki basamak veya üç karakter içerebilir. Gün bir veya iki basamak içerebilir. Yıl iki veya dört basamak içerebilir.
Milisaniye (
fffffff) gerekli değildir.amveyapm(tt) gerekli değildir. Varsayılan değer:AM.
| Tarih Türü | Örnek | Açıklama |
|---|---|---|
| tarih ve saat | DATE_FORMAT = yyyy-MM-dd HH:mm:ss.fff |
Yıl, ay ve güne ek olarak, bu tarih biçimi 00-24 saat, 00-59 dakika, 00-59 saniye ve milisaniye için üç basamak içerir. |
| tarih ve saat | DATE_FORMAT = yyyy-MM-dd hh:mm:ss.ffftt |
Yıl, ay ve güne ek olarak, bu tarih biçimi 00-12 saat, 00-59 dakika, 00-59 saniye, milisaniye için üç basamak ve AM, am, PMveya pmiçerir. |
| smalldatetime | DATE_FORMAT = yyyy-MM-dd HH:mm |
Yıl, ay ve güne ek olarak, bu tarih biçimi 00-23 saat, 00-59 dakika içerir. |
| smalldatetime | DATE_FORMAT = yyyy-MM-dd hh:mmtt |
Yıl, ay ve güne ek olarak, bu tarih biçimi 00-11 saat, 00-59 dakika, saniye yok ve AM, am, PMveya pmiçerir. |
| tarih | DATE_FORMAT = yyyy-MM-dd |
Yıl, ay ve gün. Zaman öğesi dahil değildir. |
| tarih | DATE_FORMAT = yyyy-MMM-dd |
Yıl, ay ve gün. ile ay belirtildiğindeMMM, giriş değeri bir veya dizeleridir, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, OctNovveya Dec. |
| datetime2 | DATE_FORMAT = yyyy-MM-dd HH:mm:ss.fffffff |
Yıl, ay ve güne ek olarak, bu tarih biçimi milisaniyeler için 00-23 saat, 00-59 dakika, 00-59 saniye ve yedi basamak içerir. |
| datetime2 | DATE_FORMAT = yyyy-MM-dd hh:mm:ss.ffffffftt |
Yıl, ay ve güne ek olarak, bu tarih biçimi 00-11 saat, 00-59 dakika, 00-59 saniye, milisaniye için yedi basamak ve AM, am, PMveya pmiçerir. |
| datetimeoffset | DATE_FORMAT = yyyy-MM-dd HH:mm:ss.fffffff zzz |
Yıl, ay ve güne ek olarak, bu tarih biçimi 00-23 saat, 00-59 dakika, 00-59 saniye ve milisaniyeler için 7 basamak ve giriş dosyasına olarak {+|-}HH:ssyerleştirdiğiniz saat dilimi uzaklığını içerir. Örneğin, gün ışığından yararlanmadan Los Angeles saati UTC'nin 8 saat gerisinde olduğundan, giriş dosyasındaki -08:00 değeri Los Angeles saat dilimini belirtir. |
| datetimeoffset | DATE_FORMAT = yyyy-MM-dd hh:mm:ss.ffffffftt zzz |
Yıl, ay ve güne ek olarak, bu tarih biçimi 00-11 saat, 00-59 dakika, 00-59 saniye, milisaniye için yedi basamak, (AM, am, PMveya pm) ve saat dilimi uzaklığını içerir. Önceki satırdaki açıklamaya bakın. |
| zaman | DATE_FORMAT = HH:mm:ss |
Tarih değeri yoktur; yalnızca 00-23 saat, 00-59 dakika ve 00-59 saniye. |
Desteklenen tarih ve saat biçimleri
Dış dosya biçimi çok sayıda tarih ve saat biçimini açıklayabilir:
| tarih ve saat | smalldatetime | tarih | datetime2 | datetimeoffset |
|---|---|---|---|---|
[M[M]]M-[d]d-[yy]yy HH:mm:ss[.fff] |
[M[M]]M-[d]d-[yy]yy HH:mm[:00] |
[M[M]]M-[d]d-[yy]yy |
[M[M]]M-[d]d-[yy]yy HH:mm:ss[.fffffff] |
[M[M]]M-[d]d-[yy]yy HH:mm:ss[.fffffff] zzz |
[M[M]]M-[d]d-[yy]yy hh:mm:ss[.fff][tt] |
[M[M]]M-[d]d-[yy]yy hh:mm[:00][tt] |
[M[M]]M-[d]d-[yy]yy hh:mm:ss[.fffffff][tt] |
[M[M]]M-[d]d-[yy]yy hh:mm:ss[.fffffff][tt] zzz |
|
[M[M]]M-[yy]yy-[d]d HH:mm:ss[.fff] |
[M[M]]M-[yy]yy-[d]d HH:mm[:00] |
[M[M]]M-[yy]yy-[d]d |
[M[M]]M-[yy]yy-[d]d HH:mm:ss[.fffffff] |
[M[M]]M-[yy]yy-[d]d HH:mm:ss[.fffffff] zzz |
[M[M]]M-[yy]yy-[d]d hh:mm:ss[.fff][tt] |
[M[M]]M-[yy]yy-[d]d hh:mm[:00][tt] |
[M[M]]M-[yy]yy-[d]d hh:mm:ss[.fffffff][tt] |
[M[M]]M-[yy]yy-[d]d hh:mm:ss[.fffffff][tt] zzz |
|
[yy]yy-[M[M]]M-[d]d HH:mm:ss[.fff] |
[yy]yy-[M[M]]M-[d]d HH:mm[:00] |
[yy]yy-[M[M]]M-[d]d |
[yy]yy-[M[M]]M-[d]d HH:mm:ss[.fffffff] |
[yy]yy-[M[M]]M-[d]d HH:mm:ss[.fffffff] zzz |
[yy]yy-[M[M]]M-[d]d hh:mm:ss[.fff][tt] |
[yy]yy-[M[M]]M-[d]d hh:mm[:00][tt] |
[yy]yy-[M[M]]M-[d]d hh:mm:ss[.fffffff][tt] |
[yy]yy-[M[M]]M-[d]d hh:mm:ss[.fffffff][tt] zzz |
|
[yy]yy-[d]d-[M[M]]M HH:mm:ss[.fff] |
[yy]yy-[d]d-[M[M]]M HH:mm[:00] |
[yy]yy-[d]d-[M[M]]M |
[yy]yy-[d]d-[M[M]]M HH:mm:ss[.fffffff] |
[yy]yy-[d]d-[M[M]]M HH:mm:ss[.fffffff] zzz |
[yy]yy-[d]d-[M[M]]M hh:mm:ss[.fff][tt] |
[yy]yy-[d]d-[M[M]]M hh:mm[:00][tt] |
[yy]yy-[d]d-[M[M]]M hh:mm:ss[.fffffff][tt] |
[yy]yy-[d]d-[M[M]]M hh:mm:ss[.fffffff][tt] zzz |
|
[d]d-[M[M]]M-[yy]yy HH:mm:ss[.fff] |
[d]d-[M[M]]M-[yy]yy HH:mm[:00] |
[d]d-[M[M]]M-[yy]yy |
[d]d-[M[M]]M-[yy]yy HH:mm:ss[.fffffff] |
[d]d-[M[M]]M-[yy]yy HH:mm:ss[.fffffff] zzz |
[d]d-[M[M]]M-[yy]yy hh:mm:ss[.fff][tt] |
[d]d-[M[M]]M-[yy]yy hh:mm[:00][tt] |
[d]d-[M[M]]M-[yy]yy hh:mm:ss[.fffffff][tt] |
[d]d-[M[M]]M-[yy]yy hh:mm:ss[.fffffff][tt] zzz |
|
[d]d-[yy]yy-[M[M]]M HH:mm:ss[.fff] |
[d]d-[yy]yy-[M[M]]M HH:mm[:00] |
[d]d-[yy]yy-[M[M]]M |
[d]d-[yy]yy-[M[M]]M HH:mm:ss[.fffffff] |
[d]d-[yy]yy-[M[M]]M HH:mm:ss[.fffffff] zzz |
[d]d-[yy]yy-[M[M]]M hh:mm:ss[.fff][tt] |
[d]d-[yy]yy-[M[M]]M hh:mm[:00][tt] |
[d]d-[yy]yy-[M[M]]M hh:mm:ss[.fffffff][tt] |
[d]d-[yy]yy-[M[M]]M hh:mm:ss[.fffffff][tt] zzz |
Ayrıntılar:
Ay, gün ve yıl değerlerini ayırmak için aşağıdaki ayırıcılardan birini kullanmanız gerekir:
-,/veya.. Kolaylık olması için tabloda yalnızca-ayırıcı kullanılır.Ayı metin olarak belirtmek için üç veya daha fazla karakter kullanın. Bir veya iki karakter içeren aylar sayı olarak yorumlanır.
Saat değerlerini ayırmak için simgesini kullanın
:.Köşeli ayraç içine alınmış harfler isteğe bağlıdır.
Harfler
tt[AM|PM|am|pm] olarak belirler.AMvarsayılan değerdir. Belirtildiğindett, saat değeri (hh) 0 ile 12 arasında olmalıdır.Harfler
zzz, sistemin geçerli saat dilimi için saat dilimi uzaklığını biçiminde{+|-}HH:ss]belirler.
USE_TYPE_DEFAULT = { DOĞRU | SAHTE }
PolyBase metin dosyasından veri aldığında sınırlandırılmış metin dosyalarındaki eksik değerlerin nasıl işleneceğini belirtir. Varsayılan değer YANLIŞ'tır.
DOĞRU
Metin dosyasından veri alırken, dış tablo tanımında karşılık gelen sütunun veri türü için varsayılan değeri kullanarak eksik değerleri depolayın. Örneğin, eksik bir değeri şununla değiştirin:
0sütun sayısal sütun olarak tanımlanmışsa. Ondalık sütunlar desteklenmez ve hata oluşturur.Sütun bir dize sütunuysa boş "" dizesi.
1900-01-01sütun bir tarih sütunuysa.Azure Synapse Analytics'te için
USE_TYPE_DEFAULT=trueFORMAT_TYPE = DELIMITEDTEXT, PARSER_VERSION = '2.0'desteklenmez.
YANLIŞ
Tüm eksik değerleri olarak
NULLdepolayın. Sınırlandırılmış metin dosyasında sözcüğüNULLkullanılarak depolanan tümNULLdeğerler dizesiNULLolarak içeri aktarılır.
KODLAMA = {'UTF8' | 'UTF16'}
Azure Synapse Analytics ve Analytics Platform Sistemi'nde (PDW) (APS CU7.4), PolyBase UTF8 ve UTF16-LE kodlanmış sınırlandırılmış metin dosyalarını okuyabilir.
SQL Server'da PolyBase, UTF16 ile kodlanmış dosyaların okunmasını desteklemez.
İzinler
ALTER ANY EXTERNAL FILE FORMAT izni gerektirir.
Açıklamalar
Dış dosya biçimi SQL Server ve Azure Synapse Analytics'te veritabanı kapsamlıdır. Analiz Platformu Sistemi'nde (PDW) sunucu kapsamına alınır.
Hadoop formatı yalnızca SQL Server 2016, 2017 ve 2019'da desteklenmektedir.
Biçim seçeneklerinin tümü isteğe bağlıdır ve yalnızca sınırlandırılmış metin dosyalarına uygulanır.
Veriler sıkıştırılmış biçimlerden birinde depolandığında PolyBase, veri kayıtlarını döndürmeden önce verilerin sıkıştırmasını çözer.
Microsoft Fabric'teki SQL veritabanı yalnızca sınırlı metin ve Parquet dosya formatlarının CSV formatını destekler. Fabric SQL veritabanı, veri kaynağı olarak yalnızca Microsoft Fabric'te OneLake'i destekler.
Sınırlamalar
Sınırlanmış metin dosyalarındaki satır sınırlayıcısı Hadoop'un LineRecordReader tarafından desteklenmelidir. Yani , veya \rolmalıdır\n\r\n. Bu sınırlayıcılar kullanıcı tarafından yapılandırılamaz.
Desteklenen SerDe yöntemlerinin RCFiles ile birleşimleri ve desteklenen veri sıkıştırma yöntemleri bu makalenin önceki bölümlerinde listelenmiştir. Tüm birleşimler desteklenmez.
En fazla eşzamanlı PolyBase sorgusu sayısı 32'dir. 32 eşzamanlı sorgu çalıştırıldığında, her sorgu dış dosya konumundan en fazla 33.000 dosya okuyabilir. Kök klasör ve her alt klasör de dosya olarak sayılır. Eşzamanlılık derecesi 32'den azsa, dış dosya konumu 33.000'den fazla dosya içerebilir.
Dış tablodaki dosya sayısıyla ilgili sınırlama nedeniyle, dış dosya konumunun kök ve alt klasörlerinde 30.000'den az dosya depolamanızı öneririz. Ayrıca, kök dizin altındaki alt klasör sayısını az sayıda tutmanızı öneririz. Çok fazla dosyaya başvurulduğunda, Java Sanal Makinesi yetersiz bellek özel durumu oluşabilir.
PolyBase aracılığıyla Verileri Hadoop veya Azure Blob Depolama'ya aktarırken, CREATE EXTERNAL TABLE komutunda tanımlanan sütun adları (meta veriler) değil, yalnızca veriler dışarı aktarılır.
Kilitleme
EXTERNAL FILE FORMAT nesnesinde paylaşılan bir kilit alır.
Gösteri
Sıkıştırılmış dosyaların kullanılması her zaman dış veri kaynağı ile SQL Server arasında daha az veri aktarımı arasında bir denge sağlarken, verileri sıkıştırmak ve açmak için CPU kullanımını artırır.
Gzip sıkıştırılmış metin dosyaları bölünebilir değildir. Gzip sıkıştırılmış metin dosyalarının performansını artırmak için, dış veri kaynağında aynı dizinde depolanan birden çok dosya oluşturmanızı öneririz. Bu dosya yapısı, PolyBase'in birden çok okuyucu ve sıkıştırmayı açma işlemi kullanarak verileri daha hızlı okumasına ve sıkıştırmasını açmasına olanak tanır. sıkıştırılmış dosyaların ideal sayısı, işlem düğümü başına en fazla veri okuyucu işlemi sayısıdır. SQL Server'da
Analiz Platformu Sistemi'nde (PDW) en fazla veri okuyucu işlemi sayısı düğüm başına 8'dir. Azure Synapse Analytics'te en fazla veri okuyucu işlemi sayısı düğüm başına 20 okuyucudur.
Örnekler
A. DELIMITEDTEXT dış dosya biçimi oluşturma
Bu örnek, metinle ayrılmış bir dosya için textdelimited1 adlı bir dış dosya biçimi oluşturur. FORMAT_OPTIONS için listelenen seçenekler, dosyadaki alanların bir kanal karakteri |kullanılarak ayrılması gerektiğini belirtir. Metin dosyası da Gzip codec bileşeniyle sıkıştırılır. Belirtilmezse DATA_COMPRESSION , metin dosyası sıkıştırılmaz.
Sınırlandırılmış bir metin dosyası için, veri sıkıştırma yöntemi varsayılan Codec bileşeni org.apache.hadoop.io.compress.DefaultCodecveya Gzip Codec bileşeni org.apache.hadoop.io.compress.GzipCodecolabilir.
CREATE EXTERNAL FILE FORMAT textdelimited1
WITH (
FORMAT_TYPE = DELIMITEDTEXT,
FORMAT_OPTIONS (
FIELD_TERMINATOR = '|',
DATE_FORMAT = 'MM/dd/yyyy' ),
DATA_COMPRESSION = 'org.apache.hadoop.io.compress.GzipCodec'
);
B. RCFile dış dosya biçimi oluşturma
Bu örnek, yöntemini serialization/deserializationkullanan org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe bir RCFile için dış dosya biçimi oluşturur. Ayrıca, veri sıkıştırma yöntemi için Varsayılan Codec'in kullanılacağını belirtir. Belirtilmezse DATA_COMPRESSION , varsayılan sıkıştırma yoktur.
CREATE EXTERNAL FILE FORMAT rcfile1
WITH (
FORMAT_TYPE = RCFILE,
SERDE_METHOD = 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe',
DATA_COMPRESSION = 'org.apache.hadoop.io.compress.DefaultCodec'
);
C. ORC dış dosya biçimi oluşturma
Bu örnek, verileri veri sıkıştırma yöntemiyle org.apache.io.compress.SnappyCodec sıkıştıran bir ORC dosyası için dış dosya biçimi oluşturur. Belirtilmezse DATA_COMPRESSION , varsayılan sıkıştırma yoktur.
CREATE EXTERNAL FILE FORMAT orcfile1
WITH (
FORMAT_TYPE = ORC,
DATA_COMPRESSION = 'org.apache.hadoop.io.compress.SnappyCodec'
);
D. PARQUET dış dosya biçimi oluşturma
Bu örnek, verileri veri sıkıştırma yöntemiyle org.apache.io.compress.SnappyCodec sıkıştıran bir Parquet dosyası için bir dış dosya biçimi oluşturur. Belirtilmezse DATA_COMPRESSION , varsayılan sıkıştırma yoktur.
CREATE EXTERNAL FILE FORMAT parquetfile1
WITH (
FORMAT_TYPE = PARQUET,
DATA_COMPRESSION = 'org.apache.hadoop.io.compress.SnappyCodec'
);
E. Üst bilgi satırını atlayan sınırlandırılmış metin dosyası oluşturma
Şunlar için geçerlidir: Azure Synapse Analytics ve SQL Server 2022 (16.x) ve üzeri.
Bu örnek, csv dosyası için tek bir üst bilgi satırı içeren bir dış dosya biçimi oluşturur. Daha fazla bilgi için bkz. PolyBase ile CSV dosyasını sanallaştırma.
CREATE EXTERNAL FILE FORMAT skipHeader_CSV
WITH (FORMAT_TYPE = DELIMITEDTEXT,
FORMAT_OPTIONS(
FIELD_TERMINATOR = ',',
STRING_DELIMITER = '"',
FIRST_ROW = 2,
USE_TYPE_DEFAULT = True)
);
F. JSON dış dosya biçimi oluşturma
Şunlar için geçerlidir: Azure SQL Edge.
Bu örnek, verileri veri sıkıştırma yöntemiyle org.apache.io.compress.SnappyCodec sıkıştıran bir JSON dosyası için dış dosya biçimi oluşturur. Belirtilmezse DATA_COMPRESSION , varsayılan sıkıştırma yoktur. Bu örnek Azure SQL Edge için geçerlidir ve şu anda diğer SQL ürünleri için desteklenmemektedir.
CREATE EXTERNAL FILE FORMAT jsonFileFormat
WITH (
FORMAT_TYPE = JSON,
DATA_COMPRESSION = 'org.apache.hadoop.io.compress.SnappyCodec'
);
G. Delta tablosu dış dosya biçimi oluşturma
Bu örnek, Delta tablo türü dosya biçimi için bir dış dosya biçimi oluşturur. Bu örnek SQL Server 2022 (16.x) için geçerlidir. Daha fazla bilgi için bkz. PolyBase ile delta tablosunu sanallaştırma.
CREATE EXTERNAL FILE FORMAT DeltaFileFormat
WITH (
FORMAT_TYPE = DELTA
);
İlgili içerik
- HARICI VERI KAYNAĞI OLUŞTUR (Transact-SQL)
- DIŞ TABLO OLUŞTUR (Transact-SQL)
- CREATE EXTERNAL TABLE AS SELECT (CETAS) (Harici Tablo Oluşturma ve Seçme) (Transact-SQL)
CREATE TABLE AS SELECT komutu ile bir tablo oluşturma işlemi- sys.external_file_formats (Transact-SQL)