Udostępnij za pośrednictwem


CREATE EXTERNAL FILE FORMAT (Transact-SQL)

Dotyczy: SQL Server 2016 (13.x) i nowszych Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics 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:

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_VERSIONsą 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_FORMATwartoś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 lub pm (tt) nie jest wymagane. Wartość domyślna to AM.

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, PMlub 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, amlub PMpm.
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, FebMarAprMayJunJulAugSepOctNovDeclub .
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, PMlub 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 {+&#124;-}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, PMlub 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ą. Po tt 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 programu FORMAT_TYPE = DELIMITEDTEXT, PARSER_VERSION = '2.0'.

  • FAŁSZYWY

    Zapisz wszystkie brakujące wartości jako NULL. Wszystkie NULL wartości przechowywane przy użyciu wyrazu NULL w rozdzielonym pliku tekstowym są importowane jako ciąg NULL.

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, \nlub \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.DefaultCodeclub 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
);