Freigeben über


ERSTELLEN EINES EXTERNEN DATEIFORMATS (Transact-SQL)

Gilt für: SQL Server 2016 (13.x) und höher Azure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Erstellt ein Objekt im externen Dateiformat und definiert externe Daten, die in Hadoop, Azure Blob Storage, Azure Data Lake Store oder für die Eingabe- und Ausgabestreams gespeichert sind, die externen Streams zugeordnet sind. Das Erstellen eines externen Dateiformats ist eine Voraussetzung für die Erstellung einer externen Tabelle. Durch das Erstellen eines externen Dateiformats geben Sie das tatsächliche Layout der Daten an, auf die von einer externen Tabelle verwiesen wird. Informationen zur Erstellung einer externen Tabelle finden Sie unter ERSTELLEN EINER EXTERNEN TABELLE (Transact-SQL).

Die folgenden Dateiformate werden unterstützt:

Transact-SQL-Syntaxkonventionen

Syntax

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

}

Argumente

file_format_name

Gibt einen Namen für das externe Dateiformat an.

FORMAT_TYP

Gibt das Format der externen Daten an.

  • FORMAT_TYPE = PARKETT

    Gibt ein Parquet-Format an.

  • FORMAT_TYPE = ORC

    Gibt ein ORC-Format (ORC = Optimized Row Columnar) an. Für diese Option ist auf dem externen Hadoop-Cluster Hive Version 0.11 oder höher erforderlich. In Hadoop bietet das ORC-Dateiformat eine bessere Komprimierung und Leistung als das RCFILE-Dateiformat.

  • FORMAT_TYPE = RCFILE, SERDE_METHOD = SERDE_method

    Gibt ein RcFile-Dateiformat (Record Columnar File) an. Für diese Option müssen Sie eine Hive Serializer- und Hive Deserializer-Methode (SerDe) angeben. Diese Anforderung ist auch gegeben, wenn Sie in Hadoop Hive/HiveQL zum Abfragen von RC-Dateien verwenden. Beachten Sie, dass bei der SerDe-Methode die Groß-/Kleinschreibung beachtet werden muss.

    Beispiele für die Angabe von RCFile mit den zwei von PolyBase unterstützten SerDe-Methoden.

    • 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 = TRENNZEICHENTEXT

    Dient zum Angeben eines Textformats mit Spaltentrennzeichen (auch Feldabschlusszeichen genannt).

  • FORMAT_TYPE = JSON

    Gibt ein JSON-Format an. Es gilt nur für Azure SQL Edge.

  • FORMAT_TYPE = DELTA

    Gibt ein Delta Lake-Format an. Gilt für serverlose SQL-Pools in Azure Synapse Analytics und SQL Server 2022 (16.x).

FORMAT_OPTIONS

Wahlfrei. Nur für Textdatentypen mit Trennzeichen.

Nur serverlose SQL-Pools in Azure Synapse Analytics unterstützen PARSER_VERSION.

Serverlose SQL-Pools unterstützen die DATE_FORMAT Option nicht.

DATA_COMPRESSION = data_compression_method

Gibt die Datenkomprimierungsmethode für die externen Daten an. Wenn DATA_COMPRESSION nicht angegeben wird, sind die Standarddaten nicht komprimiert.

Um ordnungsgemäß zu funktionieren, müssen komprimierte Gzip-Dateien über die .gz Dateierweiterung verfügen.

Der DELIMITEDTEXT Formattyp unterstützt diese Komprimierungsmethode: DATA_COMPRESSION = org.apache.hadoop.io.compress.GzipCodec

Formatierungsoptionen für Text mit Trennzeichen

Sämtliche in diesem Abschnitt beschriebenen Formatierungsoptionen sind optional und gelten nur für durch Trennzeichen getrennte Textdateien.

FIELD_TERMINATOR = field_terminator

Gilt nur für durch Trennzeichen getrennte Textdateien. Das Feldabschlusszeichen gibt mindestens ein Zeichen an, welches das Ende der einzelnen Felder (Spalten) in der durch Trennzeichen getrennten Textdatei markiert. Als Standardzeichen wird der senkrechte Strich (|) verwendet. Für garantierte Unterstützung wird empfohlen, mehrere ASCII-Zeichen zu verwenden.

Beispiele:

  • FIELD_TERMINATOR = '|'
  • FIELD_TERMINATOR = ' '
  • FIELD_TERMINATOR = ꞌ\tꞌ
  • FIELD_TERMINATOR = '~|~'

STRING_DELIMITER

STRING_DELIMITER = *string_delimiter*

Gibt ein Zeichen an, das die Textwerte in die durch Text getrennte Datei einschließt. Der Standardwert ist die leere Zeichenfolge „“. Der Wert von STRING_DELIMITER ist funktionell gleichbedeutend mit der FELDQUOTE-Option in der OPENROWSET BULK Funktion.

Hinweis

Hadoop-Tabellen in dedizierten SQL-Pools von Synapse ermöglichen es Ihnen, ein oder mehrere Zeichen in STRING_DELIMITER anzugeben. Im serverlosen SQL-Pool können Sie nur ein Zeichen verwenden.

Beispiele:

  • STRING_DELIMITER = '"'

  • STRING_DELIMITER = '0x22': Hexadezimalzahl in doppelten Anführungszeichen

  • STRING_DELIMITER = '*'

  • STRING_DELIMITER = ꞌ,ꞌ

  • STRING_DELIMITER = '0x7E0x7E' (Zwei Tilden, z. B ~~. ) – unterstützt im dedizierten SQL-Pool.

FIRST_ROW = first_row_int

Gilt für: Azure Synapse Analytics SQL Server ab Version 2022.

Gibt die Zeilenzahl an, die während eines PolyBase-Ladevorgangs in allen Dateien zuerst gelesen wird. Dieser Parameter kann Werte von 1 bis 15 umfassen. Wenn der Wert auf zwei festgelegt ist, wird die erste Zeile in jeder Datei (Kopfzeile) beim Laden der Daten übersprungen. Zeilen werden basierend auf dem Vorhandensein von Zeilenabschlusszeichen (/ r/n, r, /n) übersprungen. Wenn diese Option für den Export verwendet wird, werden Zeilen zu den Daten hinzugefügt, um sicherzustellen, dass die Datei ohne Datenverlust gelesen werden kann. Wenn der Wert auf >2 festgelegt wird, enthält die erste exportierte Zeile die Spaltennamen der externen Tabelle.

DATE_FORMAT = datetime_format

Gibt ein benutzerdefiniertes Format für alle Datums- und Zeitdaten an, die in einer durch Trennzeichen getrennten Textdatei angezeigt werden könnten. Wenn die Quelldatei Standardformate für datetime verwendet, ist diese Option nicht erforderlich. Pro Datei ist nur ein benutzerdefiniertes datetime-Format zulässig. Sie können pro Datei nicht mehrere benutzerdefinierte datetime-Formate angeben. Sie können jedoch mehrere datetime-Formate verwenden, wenn es sich bei den einzelnen Formaten um die Standardformate der entsprechenden zugehörigen Datentypen in der externen Tabellendefinition handelt.

Wichtig

PolyBase verwendet das benutzerdefinierte Datumsformat nur für den Import der Daten. Es verwendet das benutzerdefinierte Format nicht für das Schreiben von Daten in eine externe Datei.

Wenn DATE_FORMAT nicht angegeben ist oder eine leere Zeichenfolge ist, verwendet PolyBase folgende Standardformate:

  • datetime: 'yyyy-MM-dd HH:mm:ss'

  • smalldatetime: 'yyyy-MM-dd HH:mm'

  • Datum: 'yyyy-MM-dd'

  • datetime2: 'yyyy-MM-dd HH:mm:ss'

  • datetimeoffset: 'yyyy-MM-dd HH:mm:ss'

  • Zeit: 'HH:mm:ss'

Wichtig

Durch Angeben von benutzerdefinierten DATE_FORMAT Überschreibungen werden alle Standardtypformate festgelegt. Das bedeutet, dass in allen datetime-, date- und time-Zellen in Ihren Dateien dieselben Datumsformate verwendet werden. Mit dem Außerkraftsetzungsformat DATE_FORMATkönnen Keine Datums- und Uhrzeitwerte in unterschiedlichen Formaten vorliegen.

In der folgenden Tabelle finden Sie Beispiele für Datumsformate:

Hinweise zur Tabelle:

  • Jahr, Monat und Tag können verschiedene Formate und Reihenfolgen aufweisen. Die Tabelle enthält nur das Format JMT. Ein Monat kann eine oder zwei Ziffern oder drei Zeichen umfassen. Ein Tag kann eine oder zwei Ziffern umfassen. Ein Jahr kann zwei oder vier Ziffern umfassen.

  • Millisekunden (fffffff) sind nicht erforderlich.

  • am oder pm (tt) ist nicht erforderlich. Der Standardwert ist AM.

Datumstyp Beispiel BESCHREIBUNG
datetime DATE_FORMAT = yyyy-MM-dd HH:mm:ss.fff Zusätzlich zu Jahr, Monat und Tag umfasst dieses Datumsformat 00-24 Stunden, 00-59 Minuten, 00-59 Sekunden und drei Ziffern für Millisekunden.
datetime DATE_FORMAT = yyyy-MM-dd hh:mm:ss.ffftt Zusätzlich zu Jahr, Monat und Tag umfasst dieses Datumsformat 00-12 Stunden, 00-59 Minuten, 00-59 Sekunden, drei Ziffern für Millisekunden und AM, am, PModer . .pm
smalldatetime DATE_FORMAT = yyyy-MM-dd HH:mm Neben dem Jahr, dem Monat und dem Tag umfasst dieses Datumsformat 00 bis 23 Stunden, 00 bis 59 Minuten.
smalldatetime DATE_FORMAT = yyyy-MM-dd hh:mmtt Neben Jahr, Monat und Tag umfasst dieses Datumsformat 00-11 Stunden, 00-59 Minuten, keine Sekunden und AM, am, PModer pm.
Datum DATE_FORMAT = yyyy-MM-dd Jahr, Monat und Tag. Es ist kein Zeitelement enthalten.
Datum DATE_FORMAT = yyyy-MMM-dd Jahr, Monat und Tag. Wenn der Monat mit MMM angegeben wird, ist der Eingabewert eine der Zeichenfolgen Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov oder Dec.
datetime2 DATE_FORMAT = yyyy-MM-dd HH:mm:ss.fffffff Zusätzlich zu Jahr, Monat und Tag umfasst dieses Datumsformat 00-23 Stunden, 00-59 Minuten, 00-59 Sekunden und sieben Ziffern für Millisekunden.
datetime2 DATE_FORMAT = yyyy-MM-dd hh:mm:ss.ffffffftt Zusätzlich zu Jahr, Monat und Tag enthält dieses Datumsformat 00-11 Stunden, 00-59 Minuten, 00-59 Sekunden, sieben Ziffern für Millisekunden und AM, am, PModer . .pm
datetimeoffset DATE_FORMAT = yyyy-MM-dd HH:mm:ss.fffffff zzz Neben dem Jahr, dem Monat und dem Tag umfasst dieses Datumsformat 00 bis 23 Stunden, 00 bis 59 Minuten, 00 bis 59 Sekunden, 7 Ziffern für Millisekunden und den Offsetwert für die Zeitzone, den Sie als {+&#124;-}HH:ss in die Eingabedatei eingefügt haben. Da die Uhrzeit in Los Angeles beispielsweise ohne Umschaltung der Sommer-/Winterzeit 8 hinter UTC liegt, gibt der Wert -08:00 in der Eingabedatei die Zeitzone für Los Angeles an.
datetimeoffset DATE_FORMAT = yyyy-MM-dd hh:mm:ss.ffffffftt zzz Zusätzlich zu Jahr, Monat und Tag enthält dieses Datumsformat 00-11 Stunden, 00-59 Minuten, 00-59 Sekunden, sieben Ziffern für Millisekunden, (AM, am, PModer pm) und den Zeitzonenoffset. Eine Beschreibung finden Sie in der vorherigen Zeile.
Zeit DATE_FORMAT = HH:mm:ss Es ist kein Datumswert vorhanden, nur 00 bis 23 Stunden, 00 bis 59 Minuten und 00 bis 59 Sekunden.

Unterstützte Datums- und Uhrzeitformate

Ein externes Dateiformat kann eine Vielzahl von Datums- und Uhrzeitformaten beschreiben:

datetime smalldatetime Datum 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

Details:

  • Um Monats-, Tages- und Jahreswerte zu trennen, müssen Sie eine der folgenden Trennlinien verwenden: -,/ oder .. Der Einfachheit halber wird in der Tabelle nur das Trennzeichen - verwendet.

  • Geben Sie mindestens drei Zeichen an, wenn der Monat in Textform angegeben werden soll. Monate mit einem oder zwei Zeichen werden als Zahlen interpretiert.

  • Trennen Sie Zeitwerte mit dem Symbol :.

  • Buchstaben in eckigen Klammern sind optional.

  • Die Buchstaben tt geben [AM|PM|am|pm] an. AM ist die Standardeinstellung. Wenn tt angegeben, muss sich der Stundenwert (hh) im Bereich von 0 bis 12 befinden.

  • Die Buchstaben zzz legen den Zeitzonenoffset für die aktuelle Zeitzone des Systems im Format {+|-}HH:ss]fest.

USE_TYPE_DEFAULT = { TRUE | FALSE }

Gibt an, wie fehlende Werte in durch Trennzeichen getrennten Textdateien behandelt werden sollen, wenn PolyBase Daten aus der Textdatei abruft. Der Standardwert ist FALSCH.

  • WAHR

    Speichern Sie beim Abrufen von Daten aus der Textdatei jeden fehlenden Wert, indem Sie den Standardwert für den Datentyp der entsprechenden Spalte in der externen Tabellendefinition verwenden. Ersetzen Sie einen fehlenden Wert beispielsweise durch:

    • 0, wenn die Spalte als numerische Spalte definiert ist. Dezimalspalten werden nicht unterstützt und führen zu einem Fehler.

    • Leere Zeichenfolge „“, wenn die Spalte eine Zeichenfolgenspalte ist.

    • 1900-01-01 wenn es sich bei der Spalte um eine Datumsspalte handelt.

    • In Azure Synapse Analytics wird USE_TYPE_DEFAULT=true nicht für FORMAT_TYPE = DELIMITEDTEXT, PARSER_VERSION = '2.0' unterstützt.

  • FALSCH

    Speichern Sie alle fehlenden Werte als NULL. Alle NULL Werte, die mithilfe des Worts NULL in der durch Trennzeichen getrennten Textdatei gespeichert werden, werden als Zeichenfolge NULLimportiert.

ENCODING = {'UTF8' | 'UTF16'}

In Azure Synapse Analytics und Analytics-Plattformsystem (PDW) (APS CU 7.4) kann PolyBase UTF8- und UFT16-LE-codierte durch Trennzeichen getrennte Textdateien lesen.

In SQL Server unterstützt PolyBase nicht das Lesen UTF16-codierter Dateien.

Berechtigungen

Macht eine ALTER ANY EXTERNAL FILE FORMAT-Berechtigung erforderlich.

Bemerkungen

Das externe Dateiformat ist in SQL Server und Azure Synapse Analytics datenbankweit gültig. Es ist in Analytics-Plattformsystem (PDW) serverweit gültig.

Sämtliche Formatoptionen sind optional und gelten nur für durch Trennzeichen getrennte Textdateien.

Wenn die Daten in einem der komprimierten Formate gespeichert werden, dekomprimiert PolyBase die Daten zunächst, bevor es die Datensätze zurückgibt.

Einschränkungen

Das Zeilentrennzeichen in durch Trennzeichen getrennten Textdateien muss von dem LineRecordReader von Hadoop unterstützt werden. Möglichkeiten sind \r, \n oder \r\n. Diese Trennzeichen sind nicht durch Benutzer*innen konfigurierbar.

Die Kombinationen der unterstützten SerDe-Methoden mit RCFiles und die unterstützten Datenkomprimierungsmethoden werden oben in diesem Artikel aufgeführt. Nicht alle Kombinationen werden unterstützt.

Die maximale Anzahl der gleichzeitigen PolyBase-Abfragen beläuft sich auf 32. Wenn 32 gleichzeitige Abfragen ausgeführt werden, kann jede Abfrage maximal 33.000 Dateien vom Speicherort für externe Dateien lesen. Der Stammordner und die einzelnen Unterordner zählen auch als Datei. Wenn der Grad der Parallelität unter 32 liegt, kann der Speicherort für externe Dateien mehr als 33.000 Dateien enthalten.

Aufgrund der Begrenzung in Bezug auf die Anzahl der Dateien in der externen Tabelle wird empfohlen, weniger als 30.000 Dateien in den Stamm- und Unterordnern des Speicherorts für externe Dateien zu speichern. Darüber hinaus wird empfohlen, die Anzahl der Unterordner unter dem Stammverzeichnis gering zu halten. Wenn auf zu viele Dateien verwiesen wird, kann eine Out-of-Memory-Ausnahme von Java Virtual Machine auftreten.

Beim Exportieren von Daten nach Hadoop oder Azure Blob Storage über PolyBase werden nur die Daten exportiert, nicht die Spaltennamen (Metadaten), wie im CREATE EXTERNAL TABLE-Befehl definiert.

Sperren

Akzeptiert eine gemeinsame Sperre für das EXTERNAL FILE FORMAT-Objekt.

Leistung

Die Verwendung komprimierter Dateien ist immer mit dem Konflikt verbunden, ob weniger Daten zwischen der externen Datenquelle und SQL Server übertragen werden sollen oder ob die CPU-Auslastung zum Komprimieren und Dekomprimieren der Daten erhöht werden soll.

GZip-komprimierte Textdateien können nicht aufgeteilt werden. Es wird empfohlen, zur Verbesserung der Leistung von GZip-komprimierten Textdateien mehrere Dateien zu generieren, die alle in demselben Verzeichnis innerhalb der externen Datenquelle gespeichert sind. Die Dateistruktur ermöglicht PolyBase das schnellere Lesen und Dekomprimieren der Daten, indem mehrere Reader- und Dekomprimierungsprozesse verwendet werden. Die ideale Anzahl der komprimierten Dateien ist die maximale Anzahl der Datenleseprozesse pro Serverknoten. In SQL Server

In Analytics Platform System (PDW) beträgt die maximale Anzahl von Datenleseprozessen 8 pro Knoten. In Azure Synapse Analytics beträgt die maximale Anzahl von Datenleseprozessen 20 Leser pro Knoten.

Beispiele

Ein. Erstellen eines externen DELIMITEDTEXT-Dateiformats

In diesem Beispiel wird für eine durch Trennzeichen getrennte Textdatei ein externes Dateiformat mit dem Namen textdelimited1 erstellt. Die für FORMAT_OPTIONS aufgeführten Optionen geben an, dass die Felder in der Datei durch einen senkrechten Strich | voneinander getrennt werden müssen. Die Textdatei wird auch mit dem GZip-Codec komprimiert. Wenn DATA_COMPRESSION nicht angegeben, wird die Textdatei nicht komprimiert.

Bei einer durch Trennzeichen getrennten Textdatei kann die Datenkomprimierungsmethode entweder der Standardcodec org.apache.hadoop.io.compress.DefaultCodec oder der GZip-Codec org.apache.hadoop.io.compress.GzipCodec sein.

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. Erstellen eines externen RCFile-Dateiformats

In diesem Beispiel wird ein externes Dateiformat für eine RCFile erstellt, das die serialization/deserialization-Methode org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe verwendet. Zudem wird angegeben, dass der Standard-Codec für die Datenkomprimierungsmethode verwendet werden soll. Wenn DATA_COMPRESSION nicht angegeben, ist die Standardeinstellung keine Komprimierung.

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. Erstellen eines externen ORC-Dateiformats

In diesem Beispiel wird für eine ORC-Datei ein externes Dateiformat erstellt, das die Daten mit der Datenkomprimierungsmethode org.apache.io.compress.SnappyCodec komprimiert. Wenn DATA_COMPRESSION nicht angegeben, ist die Standardeinstellung keine Komprimierung.

CREATE EXTERNAL FILE FORMAT orcfile1
WITH (
    FORMAT_TYPE = ORC,
    DATA_COMPRESSION = 'org.apache.hadoop.io.compress.SnappyCodec'
);

D: Erstellen eines externen PARQUET-Dateiformats

In diesem Beispiel wird für eine Parquet-Datei ein externes Dateiformat erstellt, das die Daten mit der Datenkomprimierungsmethode org.apache.io.compress.SnappyCodec komprimiert. Wenn DATA_COMPRESSION nicht angegeben, ist die Standardeinstellung keine Komprimierung.

CREATE EXTERNAL FILE FORMAT parquetfile1
WITH (
    FORMAT_TYPE = PARQUET,
    DATA_COMPRESSION = 'org.apache.hadoop.io.compress.SnappyCodec'
);

E. Erstellen einer durch Trennzeichen getrennten Textdatei unter Auslassen der Kopfzeile

Gilt für: Azure Synapse Analytics und SQL Server 2022 (16.x) und höher.

In diesem Beispiel wird für eine CSV-Datei mit einer einzelnen Kopfzeile ein externes Dateiformat erstellt. Weitere Informationen finden Sie unter Virtualisieren einer CSV-Datei mit 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. Erstellen eines externen JSON-Dateiformats

Gilt für: Azure SQL Edge

In diesem Beispiel wird für eine JSON-Datei ein externes Dateiformat erstellt, das die Daten mit der Datenkomprimierungsmethode org.apache.io.compress.SnappyCodec komprimiert. Wenn DATA_COMPRESSION nicht angegeben, ist die Standardeinstellung keine Komprimierung. Dieses Beispiel gilt für Azure SQL Edge und wird derzeit nicht für andere SQL-Produkte unterstützt.

CREATE EXTERNAL FILE FORMAT jsonFileFormat
WITH (
    FORMAT_TYPE = JSON,
    DATA_COMPRESSION = 'org.apache.hadoop.io.compress.SnappyCodec'
);

G. Erstellen eines externen Dateiformats für eine Delta-Tabelle

In diesem Beispiel wird ein externes Dateiformat für Delta-Tabellen erstellt. Dieses Beispiel gilt für SQL Server 2022 (16.x). Weitere Informationen finden Sie in der Virtualize-Delta-Tabelle mit PolyBase.

CREATE EXTERNAL FILE FORMAT DeltaFileFormat
WITH (
    FORMAT_TYPE = DELTA
);