Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: SQL Server 2016 (13.x) i nowszych
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Tworzy obiekt formatu zewnętrznego definiujący dane zewnętrzne przechowywane w usługach Hadoop, Azure Blob Storage, Azure Data Lake Store lub dla strumieni wejściowych i wyjściowych skojarzonych ze strumieniami zewnętrznymi. Tworzenie formatu pliku zewnętrznego jest wymaganiem wstępnym do utworzenia tabeli zewnętrznej. Tworząc format pliku zewnętrznego, należy określić rzeczywisty układ danych, do których odwołuje się tabela zewnętrzna. Aby utworzyć tabelę zewnętrzną, zobacz CREATE EXTERNAL TABLE (Transact-SQL).
Obsługiwane są następujące formaty plików:
Tekst rozdzielany znakami
Hive RCFile
Nie dotyczy usług Azure Synapse Analytics, Azure SQL Managed Instance, Azure SQL Database ani SQL Server 2022 (16.x).
Gałąź ORC
Nie dotyczy usług Azure Synapse Analytics, Azure SQL Managed Instance, Azure SQL Database ani SQL Server 2022 (16.x).
Parkiet
JSON
Dotyczy tylko usługi Azure SQL Edge. Aby uzyskać informacje na temat importowania
OPENROWSET
danych JSON na innych platformach, zobacz Importowanie dokumentów JSON do programu SQL Server lub Wykonywanie zapytań dotyczących plików JSON przy użyciu bezserwerowej puli SQL w usłudze Azure Synapse Analytics.Delta
Dotyczy tylko bezserwerowych pul SQL w usługach Azure Synapse Analytics, Azure SQL Database, SQL Server 2022 (16.x) i nowszych wersjach. Możesz wykonać zapytanie dotyczące usługi Delta Lake w wersji 1.0. Zmiany wprowadzone od tego czasu w usłudze Delta Lake 1.2, takie jak zmiana nazw kolumn, nie są obsługiwane. Jeśli używasz wyższych wersji funkcji Delta z wektorami usuwania, punktami kontrolnymi w wersji 2 i innymi funkcjami, rozważ użycie innych aparatów zapytań, takich jak punkt końcowy analizy SQL usługi Microsoft Fabric dla usługi Lakehouse.
Transact-SQL konwencje składni
Składnia
-- 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'}
}
Argumenty (w programowaniu)
file_format_name
Określa nazwę formatu pliku zewnętrznego.
FORMAT_TYPE
Określa format danych zewnętrznych.
FORMAT_TYPE = PARQUET
Określa format Parquet.
FORMAT_TYPE = ORC
Określa zoptymalizowany format kolumn wiersza (ORC). Ta opcja wymaga programu Hive w wersji 0.11 lub nowszej w zewnętrznym klastrze hadoop. W usłudze Hadoop format pliku ORC zapewnia lepszą kompresję i wydajność niż format pliku RCFILE.
FORMAT_TYPE = RCFILE, SERDE_METHOD = SERDE_method
Określa format pliku kolumnowego rekordu (RcFile). Ta opcja wymaga określenia metody Programu Hive Serializer i Deserializer (SerDe). To wymaganie jest takie samo, jeśli używasz programu Hive/HiveQL w usłudze Hadoop do wykonywania zapytań o pliki RC. Należy pamiętać, że metoda SerDe uwzględnia wielkość liter.
Przykłady określania pliku RCFile przy użyciu dwóch metod SerDe obsługiwanych przez program PolyBase.
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
Określa format tekstu z ogranicznikami kolumn, nazywanymi również terminatorami pól.
FORMAT_TYPE = JSON
Określa format JSON. Dotyczy tylko usługi Azure SQL Edge.
FORMAT_TYPE = DELTA
Określa format usługi Delta Lake. Dotyczy bezserwerowych pul SQL w usługach Azure Synapse Analytics i SQL Server 2022 (16.x).
FORMAT_OPTIONS
Opcjonalny. Tylko dla rozdzielonych typów danych tekstowych.
Obsługiwane PARSER_VERSION
są tylko bezserwerowe pule SQL w usłudze Azure Synapse Analytics.
Bezserwerowe pule SQL nie obsługują DATE_FORMAT
tej opcji.
DATA_COMPRESSION = data_compression_method
Określa metodę kompresji danych dla danych zewnętrznych. Jeśli DATA_COMPRESSION
nie zostanie określony, wartość domyślna to nieskompresowane dane.
Aby działać prawidłowo, skompresowane pliki Gzip muszą mieć .gz
rozszerzenie pliku.
Typ DELIMITEDTEXT
formatu obsługuje tę metodę kompresji: DATA_COMPRESSION = org.apache.hadoop.io.compress.GzipCodec
Opcje formatowania tekstu rozdzielanego
Opcje formatu opisane w tej sekcji są opcjonalne i mają zastosowanie tylko do rozdzielonych plików tekstowych.
FIELD_TERMINATOR = field_terminator
Dotyczy tylko rozdzielonych plików tekstowych. Terminator pola określa co najmniej jeden znak oznaczający koniec każdego pola (kolumny) w pliku rozdzielanym tekstem. Wartość domyślna to znak |
potoku . Aby zapewnić gwarantowaną obsługę, zalecamy użycie co najmniej jednego znaku ASCII.
Przykłady:
FIELD_TERMINATOR = '|'
FIELD_TERMINATOR = ' '
FIELD_TERMINATOR = ꞌ\tꞌ
FIELD_TERMINATOR = '~|~'
STRING_DELIMITER
STRING_DELIMITER = *string_delimiter*
Określa znak, który otacza wartości tekstowe w pliku rozdzielanym tekstem. Wartość domyślna to pusty ciąg "". Wartość STRING_DELIMITER
elementu jest funkcjonalnie równoważna opcji FIELDQUOTE w OPENROWSET BULK
funkcji.
Uwaga / Notatka
Tabele usługi Hadoop w dedykowanych pulach SQL usługi Synapse umożliwiają określenie co najmniej jednego znaku w STRING_DELIMITER. W bezserwerowej puli SQL można użyć tylko jednego znaku.
Przykłady:
STRING_DELIMITER = '"'
STRING_DELIMITER = '0x22'
(Podwójny cudzysłów szesnastkowy)STRING_DELIMITER = '*'
STRING_DELIMITER = ꞌ,ꞌ
STRING_DELIMITER = '0x7E0x7E'
(Na przykład~~
dwie tyldy) — obsługiwane w dedykowanej puli SQL.
FIRST_ROW = first_row_int
Dotyczy: Azure Synapse Analytics, SQL Server 2022 i nowsze wersje
Określa numer wiersza, który jest odczytywany jako pierwszy we wszystkich plikach podczas ładowania programu PolyBase. Ten parametr może przyjmować wartości od 1 do 15. Jeśli wartość jest ustawiona na dwa, pierwszy wiersz w każdym pliku (wiersz nagłówka) jest pomijany po załadowaniu danych. Wiersze są pomijane na podstawie istnienia terminatorów wierszy (/r/n, /r, /n). Gdy ta opcja jest używana do eksportowania, wiersze są dodawane do danych, aby upewnić się, że plik można odczytać bez utraty danych. Jeśli wartość jest ustawiona na >2, pierwszy wiersz wyeksportowany to nazwy kolumn tabeli zewnętrznej.
DATE_FORMAT = datetime_format
Określa niestandardowy format dla wszystkich danych daty i godziny, które mogą być wyświetlane w rozdzielanym pliku tekstowym. Jeśli plik źródłowy używa domyślnych formatów daty/godziny, ta opcja nie jest konieczna. Dozwolony jest tylko jeden niestandardowy format daty/godziny dla każdego pliku. Nie można określić więcej niż jednego niestandardowego formatu daty/godziny na plik. Można jednak użyć więcej niż jednego formatu daty/godziny, jeśli każdy z nich jest domyślnym formatem odpowiedniego typu danych w definicji tabeli zewnętrznej.
Ważne
Program PolyBase używa tylko niestandardowego formatu daty do importowania danych. Nie używa formatu niestandardowego do zapisywania danych w pliku zewnętrznym.
Jeśli DATE_FORMAT nie jest określony lub jest pustym ciągiem, program PolyBase używa następujących formatów domyślnych:
data i czas:
'yyyy-MM-dd HH:mm:ss'
smalldatetime:
'yyyy-MM-dd HH:mm'
data:
'yyyy-MM-dd'
data/godzina2:
'yyyy-MM-dd HH:mm:ss'
datetimeoffset:
'yyyy-MM-dd HH:mm:ss'
czas:
'HH:mm:ss'
Ważne
Określanie niestandardowych DATE_FORMAT
przesłonięć wszystkie formaty typów domyślnych. Oznacza to, że musisz mieć te same formaty dat we wszystkich komórkach daty/godziny, daty i godziny w plikach. Z przesłoniętą DATE_FORMAT
wartością daty i godziny nie można mieć w innym formacie.
Przykładowe formaty dat znajdują się w poniższej tabeli:
Uwagi dotyczące tabeli:
Rok, miesiąc i dzień mogą mieć kilka formatów i zamówień. Tabela zawiera tylko format ymd . Miesiąc może zawierać jedną lub dwie cyfry lub trzy znaki. Dzień może mieć jedną lub dwie cyfry. Rok może mieć dwie lub cztery cyfry.
Milisekundy (
fffffff
) nie są wymagane.am
lubpm
(tt
) nie jest wymagane. Wartość domyślna toAM
.
Typ daty | Przykład | Opis |
---|---|---|
data/godzina | DATE_FORMAT = yyyy-MM-dd HH:mm:ss.fff |
Oprócz roku, miesiąca i dnia ten format daty obejmuje 00–24 godziny, 00–59 minut, 00–59 sekund i trzy cyfry dla milisekund. |
data/godzina | DATE_FORMAT = yyyy-MM-dd hh:mm:ss.ffftt |
Oprócz roku, miesiąca i dnia ten format daty obejmuje 00–12 godzin, 00–59 minut, 00–59 sekund, trzy cyfry dla milisekund i AM , am , PM lub pm . |
smalldatetime | DATE_FORMAT = yyyy-MM-dd HH:mm |
Oprócz roku, miesiąca i dnia ten format daty obejmuje 00–23 godziny, 00–59 minut. |
smalldatetime | DATE_FORMAT = yyyy-MM-dd hh:mmtt |
Oprócz roku, miesiąca i dnia ten format daty obejmuje od 00 do 11 godzin, 00–59 minut, bez sekund i AM , am lub PM pm . |
daty | DATE_FORMAT = yyyy-MM-dd |
Rok, miesiąc i dzień. Nie jest uwzględniony element czasu. |
daty | DATE_FORMAT = yyyy-MMM-dd |
Rok, miesiąc i dzień. Gdy miesiąc jest określony za pomocą MMM , wartość wejściowa jest jedną lub ciągami, Jan , Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec lub . |
data/godzina2 | DATE_FORMAT = yyyy-MM-dd HH:mm:ss.fffffff |
Oprócz roku, miesiąca i dnia ten format daty obejmuje 00–23 godziny, 00–59 minut, 00–59 sekund i siedem cyfr w milisekundach. |
data/godzina2 | DATE_FORMAT = yyyy-MM-dd hh:mm:ss.ffffffftt |
Oprócz roku, miesiąca i dnia ten format daty obejmuje 00–11 godzin, 00–59 minut, 00–59 sekund, siedem cyfr w milisekundach i AM , am , PM lub pm . |
datetimeoffset | DATE_FORMAT = yyyy-MM-dd HH:mm:ss.fffffff zzz |
Oprócz roku, miesiąca i dnia ten format daty obejmuje 00–23 godziny, 00–59 minut, 00–59 sekund i 7 cyfr w milisekundach oraz przesunięcie strefy czasowej, które umieścisz w pliku wejściowym jako {+|-}HH:ss . Na przykład, ponieważ czas Los Angeles bez letnich oszczędności wynosi 8 godzin za UTC, wartość -08:00 w pliku wejściowym określa strefę czasową dla Los Angeles. |
datetimeoffset | DATE_FORMAT = yyyy-MM-dd hh:mm:ss.ffffffftt zzz |
Oprócz roku, miesiąca i dnia ten format daty obejmuje od 00 do 11 godzin, 00–59 minut, 00–59 sekund, siedem cyfr dla milisekund, (AM , am , PM lub pm ) oraz przesunięcie strefy czasowej. Zobacz opis w poprzednim wierszu. |
czas | DATE_FORMAT = HH:mm:ss |
Brak wartości daty, tylko 00–23 godziny, 00–59 minut i 00–59 sekund. |
Obsługiwane formaty daty i godziny
Format pliku zewnętrznego może opisywać dużą liczbę formatów daty i godziny:
data/godzina | smalldatetime | daty | data/godzina2 | 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 |
Szczegóły:
Aby oddzielić wartości miesiąca, dnia i roku, należy użyć jednego z następujących separatorów:
-
, lub/
.
. Dla uproszczenia tabela używa tylko separatora-
.Aby określić miesiąc jako tekst, użyj co najmniej trzech znaków. Miesiące z co najmniej jednym znakiem są interpretowane jako liczba.
Aby oddzielić wartości czasu, użyj symbolu
:
.Litery ujęte w nawiasy kwadratowe są opcjonalne.
Litery
tt
wyznaczają [AM
|PM
|am
|pm
].AM
jest wartością domyślną. Pott
określeniu wartości godziny (hh
) musi należeć do zakresu od 0 do 12.Litery
zzz
określają przesunięcie strefy czasowej dla bieżącej strefy czasowej systemu w formacie{+|-}HH:ss]
.
USE_TYPE_DEFAULT = { TRUE | FALSE }
Określa sposób obsługi brakujących wartości w rozdzielanych plikach tekstowych, gdy program PolyBase pobiera dane z pliku tekstowego. Wartość domyślna to FALSE.
PRAWIDŁOWE
Podczas pobierania danych z pliku tekstowego należy przechowywać każdą brakującą wartość przy użyciu wartości domyślnej dla typu danych odpowiadającej mu kolumny w definicji tabeli zewnętrznej. Na przykład zastąp brakującą wartością:
0
jeśli kolumna jest zdefiniowana jako kolumna liczbowa. Kolumny dziesiętne nie są obsługiwane i będą błędy.Pusty ciąg "", jeśli kolumna jest kolumną ciągu.
1900-01-01
jeśli kolumna jest kolumną daty.W usłudze Azure Synapse Analytics
USE_TYPE_DEFAULT=true
nie jest obsługiwana w przypadku programuFORMAT_TYPE = DELIMITEDTEXT, PARSER_VERSION = '2.0'
.
FAŁSZYWY
Zapisz wszystkie brakujące wartości jako
NULL
. WszystkieNULL
wartości przechowywane przy użyciu wyrazuNULL
w rozdzielonym pliku tekstowym są importowane jako ciągNULL
.
KODOWANIE = {'UTF8' | "UTF16"}
W usłudze Azure Synapse Analytics and Analytics Platform System (PDW) (APS CU7.4) technologia PolyBase może odczytywać pliki tekstowe utF8 i UTF16-LE zakodowane rozdzielane pliki tekstowe.
W programie SQL Server technologia PolyBase nie obsługuje odczytywania zakodowanych plików UTF16.
Uprawnienia
Wymaga uprawnienia ALTER ANY EXTERNAL FILE FORMAT.
Uwagi
Format pliku zewnętrznego jest w zakresie bazy danych w programach SQL Server i Azure Synapse Analytics. Jest ona ograniczona do zakresu serwera w systemie platformy analizy (PDW).
Opcje formatowania są opcjonalne i mają zastosowanie tylko do rozdzielanych plików tekstowych.
Gdy dane są przechowywane w jednym ze skompresowanych formatów, program PolyBase najpierw dekompresuje dane przed zwróceniem rekordów danych.
Ograniczenia
Ogranicznik wierszy w plikach tekstowych rozdzielanych musi być obsługiwany przez element LineRecordReader usługi Hadoop. Oznacza to, że musi to być \r
, \n
lub \r\n
. Te ograniczniki nie są konfigurowalne przez użytkownika.
Kombinacje obsługiwanych metod SerDe z rcFiles i obsługiwanych metod kompresji danych są wymienione wcześniej w tym artykule. Nie wszystkie kombinacje są obsługiwane.
Maksymalna liczba współbieżnych zapytań polyBase wynosi 32. Po uruchomieniu 32 współbieżnych zapytań każde zapytanie może odczytywać maksymalnie 33 000 plików z lokalizacji pliku zewnętrznego. Folder główny i każdy podfolder również są liczone jako plik. Jeśli stopień współbieżności jest mniejszy niż 32, lokalizacja pliku zewnętrznego może zawierać więcej niż 33 000 plików.
Ze względu na ograniczenie liczby plików w tabeli zewnętrznej zalecamy przechowywanie mniej niż 30 000 plików w katalogu głównym i podfolderach lokalizacji pliku zewnętrznego. Ponadto zalecamy przechowywanie liczby podfolderów w katalogu głównym do małej liczby. W przypadku przywołowania zbyt wielu plików może wystąpić wyjątek braku pamięci maszyny wirtualnej Java.
Podczas eksportowania danych do usługi Hadoop lub Azure Blob Storage za pomocą technologii PolyBase eksportowane są tylko dane, a nie nazwy kolumn (metadane) zdefiniowane w poleceniu CREATE EXTERNAL TABLE.
Blokowanie
Pobiera udostępnioną blokadę obiektu EXTERNAL FILE FORMAT.
Wydajność
Użycie skompresowanych plików zawsze wiąże się z kompromisem między przesyłaniem mniejszej ilości danych między zewnętrznym źródłem danych a programem SQL Server, jednocześnie zwiększając użycie procesora CPU w celu skompresowania i dekompresowania danych.
Skompresowane pliki tekstowe Gzip nie są rozdzielane. Aby zwiększyć wydajność skompresowanych plików tekstowych Gzip, zalecamy wygenerowanie wielu plików przechowywanych w tym samym katalogu w zewnętrznym źródle danych. Ta struktura plików umożliwia programowi PolyBase szybsze odczytywanie i dekompresację danych przy użyciu wielu procesów odczytu i dekompresji. Idealna liczba skompresowanych plików to maksymalna liczba procesów czytnika danych na węzeł obliczeniowy. W programie SQL Server
W systemie platformy analizy (PDW) maksymalna liczba procesów czytnika danych wynosi 8 na węzeł. W usłudze Azure Synapse Analytics maksymalna liczba procesów czytnika danych to 20 czytelników na węzeł.
Przykłady
Odp. Tworzenie formatu pliku zewnętrznego DELIMITEDTEXT
W tym przykładzie tworzony jest zewnętrzny format pliku o nazwie textdelimited1 dla pliku rozdzielanego tekstem. Opcje wymienione dla FORMAT_OPTIONS określają, że pola w pliku powinny być oddzielone znakiem potoku |
. Plik tekstowy jest również kompresowany za pomocą kodera Gzip. Jeśli DATA_COMPRESSION
nie zostanie określony, plik tekstowy jest nieskompresowany.
W przypadku pliku tekstowego rozdzielanego metoda kompresji danych może być domyślnym koderem codec, org.apache.hadoop.io.compress.DefaultCodec
lub Gzip Codec, org.apache.hadoop.io.compress.GzipCodec
.
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. Tworzenie formatu pliku zewnętrznego RCFile
W tym przykładzie tworzony jest format pliku zewnętrznego dla pliku RCFile, który używa serialization/deserialization
metody org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe
. Określa również, aby użyć domyślnego kodera dla metody kompresji danych. Jeśli DATA_COMPRESSION
nie zostanie określona, wartość domyślna to żadna kompresja.
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. Tworzenie formatu pliku zewnętrznego ORC
W tym przykładzie tworzony jest zewnętrzny format pliku ORC, który kompresuje dane za org.apache.io.compress.SnappyCodec
pomocą metody kompresji danych. Jeśli DATA_COMPRESSION
nie zostanie określona, wartość domyślna to żadna kompresja.
CREATE EXTERNAL FILE FORMAT orcfile1
WITH (
FORMAT_TYPE = ORC,
DATA_COMPRESSION = 'org.apache.hadoop.io.compress.SnappyCodec'
);
D. Tworzenie formatu pliku zewnętrznego PARQUET
W tym przykładzie tworzony jest format pliku zewnętrznego dla pliku Parquet, który kompresuje dane za org.apache.io.compress.SnappyCodec
pomocą metody kompresji danych. Jeśli DATA_COMPRESSION
nie zostanie określona, wartość domyślna to żadna kompresja.
CREATE EXTERNAL FILE FORMAT parquetfile1
WITH (
FORMAT_TYPE = PARQUET,
DATA_COMPRESSION = 'org.apache.hadoop.io.compress.SnappyCodec'
);
E. Tworzenie rozdzielanego pliku tekstowego pomijania wiersza nagłówka
Dotyczy: Usługi Azure Synapse Analytics i SQL Server 2022 (16.x) i nowsze.
W tym przykładzie tworzony jest format pliku zewnętrznego dla pliku CSV z pojedynczym wierszem nagłówka. Aby uzyskać więcej informacji, zobacz Wirtualizacja pliku CSV za pomocą technologii PolyBase.
CREATE EXTERNAL FILE FORMAT skipHeader_CSV
WITH (FORMAT_TYPE = DELIMITEDTEXT,
FORMAT_OPTIONS(
FIELD_TERMINATOR = ',',
STRING_DELIMITER = '"',
FIRST_ROW = 2,
USE_TYPE_DEFAULT = True)
);
F. Tworzenie formatu pliku zewnętrznego JSON
Dotyczy: Azure SQL Edge.
W tym przykładzie tworzony jest zewnętrzny format pliku JSON, który kompresuje dane za org.apache.io.compress.SnappyCodec
pomocą metody kompresji danych. Jeśli DATA_COMPRESSION
nie zostanie określona, wartość domyślna to żadna kompresja. Ten przykład dotyczy usługi Azure SQL Edge i obecnie nie jest obsługiwany w przypadku innych produktów SQL.
CREATE EXTERNAL FILE FORMAT jsonFileFormat
WITH (
FORMAT_TYPE = JSON,
DATA_COMPRESSION = 'org.apache.hadoop.io.compress.SnappyCodec'
);
G. Tworzenie zewnętrznego formatu pliku tabeli delty
W tym przykładzie tworzony jest format pliku zewnętrznego dla formatu pliku typu delta. Ten przykład dotyczy programu SQL Server 2022 (16.x). Aby uzyskać więcej informacji, zobacz Wirtualizacja tabeli różnicowej za pomocą technologii PolyBase.
CREATE EXTERNAL FILE FORMAT DeltaFileFormat
WITH (
FORMAT_TYPE = DELTA
);
Treści powiązane
- UTWÓRZ ZEWNĘTRZNE ŹRÓDŁO DANYCH (Transact-SQL)
- UTWÓRZ TABELĘ ZEWNĘTRZNĄ (Transact-SQL)
- CREATE EXTERNAL TABLE AS SELECT (CETAS) (Transact-SQL) (CREATE EXTERNAL TABLE AS SELECT (CETAS) (CREATE EXTERNAL TABLE AS SELECT (CETAS) (Transact-SQL)
- Utwórz tabelę jako wybierz
- sys.external_file_formats (Transact-SQL)