Partager via


CREATE EXTERNAL FILE FORMAT (Transact-SQL)

S’applique à : SQL Server 2016 (13.x) et versions ultérieures Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)

Crée un objet format de fichier externe qui définit les données externes stockées dans Hadoop, Stockage Blob Azure ou Azure Data Lake Store ou pour les flux d’entrée et de sortie associés à des flux externes. La création d’un format de fichier externe est un prérequis à la création d’une table externe. En créant un format de fichier externe, vous spécifiez la disposition des données référencées par une table externe. Pour créer une table externe, consultez CREATE EXTERNAL TABLE (Transact-SQL).

Les formats de fichier suivants sont pris en charge :

Conventions de la syntaxe Transact-SQL

Syntaxe

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

}

Les arguments

file_format_name

Spécifie un nom pour le format de fichier externe.

FORMAT_TYPE

Spécifie le format des données externes.

  • FORMAT_TYPE = PARQUET

    spécifie un format Parquet.

  • FORMAT_TYPE = ORC

    Spécifie un format ORC. Cette option nécessite Hive version 0.11 ou version ultérieure dans le cluster Hadoop externe. Dans Hadoop, le format de fichier ORC offre une meilleure compression et de meilleures performances que le format de fichier RCFILE.

  • FORMAT_TYPE = RCFILE, SERDE_METHOD = SERDE_method

    Spécifie un format de fichier d’enregistrement à colonnes (RcFile). Cette option nécessite que vous spécifiiez un sérialiseur Hive et la méthode de désérialiseur (SerDe). Cette exigence est la même si vous utilisez Hive/HiveQL dans Hadoop pour interroger les fichiers RC. Notez que la méthode SerDe respecte la casse.

    Exemples de spécification RCFile avec les deux méthodes SerDe prises en charge par 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

    Spécifie un format de texte avec des délimiteurs de colonne, également appelés « marques de fin de champ ».

  • FORMAT_TYPE = JSON

    Spécifie un format JSON. S’applique uniquement à Azure SQL Edge.

  • FORMAT_TYPE = DELTA

    Spécifie un format Delta Lake. S’applique à : pools SQL serverless dans Azure Synapse Analytics et SQL Server 2022 (16.x)

FORMAT_OPTIONS

facultatif. Uniquement pour les types de données texte délimités.

Seuls les pools SQL serverless d’Azure Synapse Analytics prennent en charge PARSER_VERSION.

Les pools SQL serverless ne prennent pas en charge l’option DATE_FORMAT .

DATA_COMPRESSION = data_compression_method

Spécifie la méthode de compression appliquée aux données externes. Quand DATA_COMPRESSION elle n’est pas spécifiée, la valeur par défaut est des données non compressées.

Pour fonctionner correctement, les fichiers compressés Gzip doivent avoir l’extension de .gz fichier.

Le type de DELIMITEDTEXT format prend en charge cette méthode de compression : DATA_COMPRESSION = org.apache.hadoop.io.compress.GzipCodec

Options de format de texte délimité

Les options de format décrites dans cette section sont facultatives et s’appliquent uniquement aux fichiers texte délimité.

FIELD_TERMINATOR = field_terminator

S’applique uniquement aux fichiers texte délimité. La marque de fin de champ spécifie un ou plusieurs caractères qui indiquent la fin de chaque champ (colonne) dans le fichier texte délimité. La valeur par défaut est le caractère de canal |. Pour une prise en charge garantie, nous vous recommandons d’utiliser un ou plusieurs caractères ASCII.

Exemples :

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

STRING_DELIMITER

STRING_DELIMITER = *string_delimiter*

Spécifie un caractère qui place les valeurs textuelles dans le fichier délimité par du texte. La valeur par défaut est la chaîne vide "". La valeur est STRING_DELIMITER fonctionnellement équivalente à l’option FIELDQUOTE dans la OPENROWSET BULK fonction.

Notes

Les tables Hadoop dans les pools SQL dédiés Synapse vous permettent de spécifier un ou plusieurs caractères dans STRING_DELIMITER. Dans un pool SQL serverless, vous ne pouvez utiliser qu’un seul caractère.

Exemples :

  • STRING_DELIMITER = '"'

  • STRING_DELIMITER = '0x22' (Double guillemet hexagonal)

  • STRING_DELIMITER = '*'

  • STRING_DELIMITER = ꞌ,ꞌ

  • STRING_DELIMITER = '0x7E0x7E' (Deux tildes, par exemple) ~~ - pris en charge dans le pool SQL dédié.

FIRST_ROW = first_row_int

S'applique à : Azure Synapse Analytics, SQL Server 2022 et versions ultérieures

Spécifie le numéro de la ligne qui est lue en premier dans tous les fichiers lors d’un chargement PolyBase. Ce paramètre peut prendre les valeurs allant de 1 à 15. Si la valeur est définie sur 2, la première ligne de chaque fichier (ligne d’en-tête) est ignorée lorsque les données sont chargées. Les lignes sont ignorées en présence de marques de fin de ligne (/r/n, /r, /n). Lorsque cette option est utilisée pour l’exportation, les lignes sont ajoutées aux données pour garantir que le fichier pourra être lu sans perte de données. Si la valeur est définie sur >2, la première ligne exportée est celle des noms de colonnes de la table externe.

DATE_FORMAT = datetime_format

Spécifie un format personnalisé pour toutes les données de date et d’heure qui peuvent apparaître dans un fichier texte délimité. Si le fichier source utilise des formats DateHeure par défaut, cette option n’est pas nécessaire. Un seul format DateHeure personnalisé est autorisé par fichier. Vous ne pouvez pas spécifier plusieurs formats DateHeure personnalisés dans un même fichier. Toutefois, vous pouvez utiliser plusieurs formats DateHeure si chacun d’eux est le format par défaut de son type de données dans la définition de la table externe.

Important

PolyBase utilise uniquement le format de date personnalisé pour l’importation des données. Il n’utilise pas le format personnalisé pour l’écriture de données dans un fichier externe.

Lorsque DATE_FORMAT n’est pas spécifié ou est une chaîne vide, PolyBase utilise les formats par défaut suivants :

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

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

  • date : 'yyyy-MM-dd'

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

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

  • time : 'HH:mm:ss'

Important

La spécification de remplacements personnalisés DATE_FORMAT remplace tous les formats de type par défaut. Cela signifie que vous devrez avoir les mêmes formats de date dans toutes les cellules datetime, date et time de vos fichiers. Avec la substitution DATE_FORMAT, vous ne pouvez pas avoir de valeurs de date et d’heure dans un format différent.

Des exemples de formats de date se trouvent dans le tableau suivant :

Remarques sur ce tableau :

  • Les années, les mois et les jours peuvent avoir de nombreux formats et ordres différents. Le tableau présente uniquement le format ymd. Les mois peuvent avoir un ou deux chiffres, ou trois caractères. Les jours peuvent avoir un ou deux chiffres. Les années peuvent comporter deux ou quatre chiffres.

  • Les millisecondes (fffffff) ne sont pas requises.

  • am ou pm (tt) n’est pas obligatoire. Par défaut, il s’agit de AM.

Type de date Exemple Descriptif
datetime DATE_FORMAT = yyyy-MM-dd HH:mm:ss.fff En plus de l’année, du mois et du jour, ce format de date comprend 00-24 heures, 00-59 minutes, 00 à 59 secondes et trois chiffres pour les millisecondes.
datetime DATE_FORMAT = yyyy-MM-dd hh:mm:ss.ffftt En plus de l’année, du mois et du jour, ce format de date comprend 00-12 heures, 00-59 minutes, 00-59 secondes, trois chiffres pour les millisecondes et AM, amPMou pm.
smalldatetime DATE_FORMAT = yyyy-MM-dd HH:mm Outre l’année, le mois et le jour, ce format de date inclut de 00 à 23 heures et de 00 à 59 minutes.
smalldatetime DATE_FORMAT = yyyy-MM-dd hh:mmtt En plus de l’année, du mois et du jour, ce format de date inclut 00-11 heures, 00-59 minutes, pas de secondes et AM, am, PMou pm.
date DATE_FORMAT = yyyy-MM-dd L’année, le mois et le jour. Aucun élément d’heure n’est inclus.
date DATE_FORMAT = yyyy-MMM-dd L’année, le mois et le jour. Lorsque le mois est spécifié avec MMM, la valeur d’entrée est une ou plusieurs des chaînes Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov et Dec.
datetime2 DATE_FORMAT = yyyy-MM-dd HH:mm:ss.fffffff En plus de l’année, du mois et du jour, ce format de date comprend 00-23 heures, 00-59 minutes, 00 à 59 secondes et sept chiffres pour les millisecondes.
datetime2 DATE_FORMAT = yyyy-MM-dd hh:mm:ss.ffffffftt En plus de l’année, du mois et du jour, ce format de date comprend 00-11 heures, 00-59 minutes, 00-59 secondes, sept chiffres pour les millisecondes et AM, amPMou pm.
datetimeoffset DATE_FORMAT = yyyy-MM-dd HH:mm:ss.fffffff zzz Outre l’année, le mois et le jour, ce format de date inclut de 00 à 23 heures, de 00 à 59 minutes, de 00 à 59 secondes, 7 chiffres pour les millisecondes, ainsi que le décalage des fuseaux horaires que vous placez dans le fichier ainsi : {+&#124;-}HH:ss. Par exemple, étant donné que l’heure de Los Angeles, sans l’heure d’été, est en retard de 8 heures par rapport à l’heure UTC, la valeur -08:00, dans le fichier d’entrée va spécifier le fuseau horaire de Los Angeles.
datetimeoffset DATE_FORMAT = yyyy-MM-dd hh:mm:ss.ffffffftt zzz En plus de l’année, du mois et du jour, ce format de date inclut 00-11 heures, 00-59 minutes, 00 à 59 secondes, sept chiffres pour les millisecondes, (AM, amou PMpm), et le décalage du fuseau horaire. Voir la description à la ligne précédente.
temps DATE_FORMAT = HH:mm:ss Il n’existe aucune valeur de date, seulement de 00 à 23 heures, de 00 à 59 minutes et de 00 à 59 secondes.

Formats de date et d’heure pris en charge

Le format de fichier externe peut décrire un grand nombre de formats de date et d’heure :

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

Détails :

  • Pour séparer les valeurs de mois, jour et année, vous devez utiliser l’un des séparateurs suivants : -, / ou .. Par souci de simplicité, la table utilise uniquement le séparateur -.

  • Pour spécifier le mois sous forme de texte, utilisez les trois caractères (ou plus). Les mois constitués d’un ou deux caractères sont interprétés comme des nombres.

  • Pour séparer les valeurs de temps, utilisez le symbole :.

  • Les lettres entre crochets sont facultatives.

  • Les lettres tt désignent [AM|PM|am|pm]. AM est la valeur par défaut. Quand tt elle est spécifiée, la valeur d’heure (hh) doit être comprise entre 0 et 12.

  • Les lettres zzz désignent le décalage de fuseau horaire pour le fuseau horaire actuel du système au format {+|-}HH:ss].

USE_TYPE_DEFAULT = { TRUE | FALSE }

Spécifie comment gérer les valeurs manquantes dans les fichiers texte délimité lorsque PolyBase récupère les données à partir du fichier texte. La valeur par défaut est FALSE.

  • VRAI

    Lors de la récupération des données à partir du fichier texte, stockez chaque valeur manquante à l’aide de la valeur par défaut du type de données de la colonne correspondante dans la définition de la table externe. Par exemple, remplacez une valeur manquante par :

    • 0 si la colonne est définie comme numérique. Les colonnes décimales ne sont pas prises en charge et génèrent une erreur.

    • Une chaîne vide «» si la colonne est une colonne de chaîne.

    • 1900-01-01 si la colonne est une colonne de date.

    • Dans Azure Synapse Analytics, USE_TYPE_DEFAULT=true n’est pas pris en charge pour FORMAT_TYPE = DELIMITEDTEXT, PARSER_VERSION = '2.0'.

  • FAUX

    Stockez toutes les valeurs manquantes en tant que NULL. Toutes les NULL valeurs stockées à l’aide du mot NULL dans le fichier texte délimité sont importées en tant que chaîne NULL.

ENCODING = {’UTF8’ | ’UTF16’}

Dans Azure Synapse Analytics et Analytics Platform System (PDW) (APS CU 7.4), PolyBase peut lire les fichiers texte délimités encodés en UTF8 et UTF16-LE.

Dans SQL Server, PolyBase ne prend pas en charge la lecture des fichiers UTF16.

Autorisations

Nécessite l’autorisation ALTER ANY EXTERNAL FILE FORMAT.

Notes

Le format de fichier externe est limité à la base de données dans SQL Server et Azure Synapse Analytics. Il est limité au serveur dans Analytics Platform System (PDW).

Les options de format sont toutes facultatives et s’appliquent uniquement aux fichiers texte délimité.

Lorsque les données sont stockées dans l’un des formats compressés, PolyBase décompresse d’abord les données avant de retourner les enregistrements de données.

Limites

Dans les fichiers texte délimité, le séparateur de lignes doit être pris en charge par LineRecordReader de Hadoop. Elle doit être égale à \r, \n ou \r\n. Ces délimiteurs ne sont pas configurables par l’utilisateur.

Les combinaisons de méthodes SerDe prises en charge par RCFile et les méthodes de compression de données prises en charge sont répertoriées plus haut dans cet article. Toutes les combinaisons ne sont pas prises en charge.

Le nombre maximal de requêtes PolyBase simultanées est de 32. Lorsque 32 requêtes sont exécutées simultanément, chaque requête peut lire un maximum de 33 000 fichiers à partir de l’emplacement de fichier externe. Le dossier racine et chaque sous-dossier comptent également comme un fichier. Si le degré de concurrence est inférieur à 32, l’emplacement de fichier externe peut contenir plus de 33 000 fichiers.

En raison de la limitation concernant le nombre de fichiers de la table externe, nous vous recommandons de stocker moins de 30 000 fichiers à la racine et dans les sous-dossiers de l’emplacement de fichier externe. En outre, nous vous recommandons de limiter au maximum le nombre de sous-dossiers dans le répertoire racine. Lorsque trop de fichiers sont référencés, une exception d’insuffisance de mémoire Java Virtual Machine peut être levée.

En cas d’exportation de données vers Hadoop ou vers le Stockage Blob Azure via PolyBase, seules les données sont exportées, et non les noms de colonnes (métadonnées), comme le définit la commande CREATE EXTERNAL TABLE.

Verrouillage

Prend un verrou partagé sur l’objet EXTERNAL FILE FORMAT.

Performances

L’utilisation de fichiers compressés présente l’inconvénient de devoir transférer moins de données entre la source de données externe et SQL Server, tout en augmentant l’utilisation du processeur pour compresser et décompresser les données.

Les fichiers texte compressés avec GZip ne sont pas fractionnables. Pour améliorer les performances des fichiers texte compressés avec Gzip, nous vous recommandons de générer plusieurs fichiers et de les stocker dans le même répertoire de la source de données externe. Cette structure de fichiers permet à PolyBase de lire et de décompresser les données plus rapidement à l’aide de plusieurs processus de lecture et de décompression. Le nombre idéal de fichiers compressés correspond au nombre maximal de processus de lecteur de données par nœud de calcul. Dans SQL Server

Dans Analytics Platform System (PDW), le nombre maximal de processus de lecteur de données est de 8 par nœud. Dans Azure Synapse Analytics, le nombre maximal de processus de lecteur de données est de 20 lecteurs par nœud.

Exemples

R. Créer un format de fichier externe DELIMITEDTEXT

Cet exemple crée un format de fichier externe nommé textdelimited1 pour un fichier texte délimité. Les options répertoriées pour FORMAT_OPTIONS spécifient que les champs du fichier doivent être séparés par le caractère de canal |. Le fichier texte est également compressé avec le codec Gzip. Si DATA_COMPRESSION ce n’est pas spécifié, le fichier texte n’est pas compressé.

La méthode de compression pour un fichier texte délimité peut être le Codec par défaut org.apache.hadoop.io.compress.DefaultCodec ou le Codec Gzip, 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. Créer un format de fichier externe RCFile

L’exemple crée un format de fichier pour un RCFile qui utilise la méthode serialization/deserializationorg.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe. Il spécifie également l’utilisation du Codec par défaut pour la méthode de compression des données. Si DATA_COMPRESSION ce n’est pas spécifié, la valeur par défaut n’est pas de compression.

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

Chapitre C. Créer un format de fichier externe ORC

Cet exemple crée un format de fichier externe pour un fichier ORC qui compresse les données avec la méthode de compression des données org.apache.io.compress.SnappyCodec. Si DATA_COMPRESSION ce n’est pas spécifié, la valeur par défaut n’est pas de compression.

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

D. Créer un format de fichier externe PARQUET

Cet exemple crée un format de fichier externe pour un fichier Parquet qui compresse les données avec la méthode de compression des données org.apache.io.compress.SnappyCodec. Si DATA_COMPRESSION ce n’est pas spécifié, la valeur par défaut n’est pas de compression.

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

E. Créer un fichier texte délimité qui ignore la ligne d’en-tête

S’applique à : Azure Synapse Analytics, et SQL Server 2022 (16.x) et versions ultérieures.

Cet exemple crée un format de fichier externe pour un fichier CSV avec une seule ligne d’en-tête. Pour plus d’informations, consultez Virtualiser le fichier CSV avec 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. Créer un format de fichier externe JSON

S’applique à : Azure SQL Edge.

Cet exemple crée un format de fichier externe pour un fichier JSON qui compresse les données avec la méthode de compression des données org.apache.io.compress.SnappyCodec. Si DATA_COMPRESSION ce n’est pas spécifié, la valeur par défaut n’est pas de compression. Cet exemple s’applique à Azure SQL Edge et n’est actuellement pas pris en charge pour les autres produits SQL.

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

G. Créer un format de fichier externe de table delta

Cet exemple crée un format de fichier externe pour le format de fichier de type table delta. Cet exemple s’applique à SQL Server 2022 (16.x). Pour plus d’informations, consultez Virtualize delta table with PolyBase.

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