BULK INSERT (Transact-SQL)BULK INSERT (Transact-SQL)

CETTE RUBRIQUE S’APPLIQUE À :ouiSQL Server (à partir de la version 2008)ouiAzure SQL DatabasenonAzure SQL Data Warehouse nonParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Importe un fichier de données dans une table ou vue de base de données dans un format spécifié par l'utilisateur dans SQL ServerSQL Server.Imports a data file into a database table or view in a user-specified format in SQL ServerSQL Server

Important

Sur base de données SQL Azure une Instance gérée, cette fonctionnalité de T-SQL présente certaines modifications de comportement.On Azure SQL Database Managed Instance, this T-SQL feature has certain behavior changes. Consultez différences SQL de base de données gérés Instance T-SQL Azure à partir de SQL Server pour plus d’informations sur toutes les modifications de comportement de T-SQL.See Azure SQL Database Managed Instance T-SQL differences from SQL Server for details for all T-SQL behavior changes.

Icône de lien de rubrique Conventions de la syntaxe Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SyntaxeSyntax


BULK INSERT   
   [ database_name . [ schema_name ] . | schema_name . ] [ table_name | view_name ]   
      FROM 'data_file'   
     [ WITH   
    (   
   [ [ , ] BATCHSIZE = batch_size ]   
   [ [ , ] CHECK_CONSTRAINTS ]   
   [ [ , ] CODEPAGE = { 'ACP' | 'OEM' | 'RAW' | 'code_page' } ]   
   [ [ , ] DATAFILETYPE =   
      { 'char' | 'native'| 'widechar' | 'widenative' } ]   
   [ [ , ] DATASOURCE = 'data_source_name' ]
   [ [ , ] ERRORFILE = 'file_name' ]
   [ [ , ] ERRORFILE_DATASOURCE = 'data_source_name' ]   
   [ [ , ] FIRSTROW = first_row ]   
   [ [ , ] FIRE_TRIGGERS ]   
   [ [ , ] FORMATFILE_DATASOURCE = 'data_source_name' ]
   [ [ , ] KEEPIDENTITY ]   
   [ [ , ] KEEPNULLS ]   
   [ [ , ] KILOBYTES_PER_BATCH = kilobytes_per_batch ]   
   [ [ , ] LASTROW = last_row ]   
   [ [ , ] MAXERRORS = max_errors ]   
   [ [ , ] ORDER ( { column [ ASC | DESC ] } [ ,...n ] ) ]   
   [ [ , ] ROWS_PER_BATCH = rows_per_batch ]   
   [ [ , ] ROWTERMINATOR = 'row_terminator' ]   
   [ [ , ] TABLOCK ]   

   -- input file format options
   [ [ , ] FORMAT = 'CSV' ]
   [ [ , ] FIELDQUOTE = 'quote_characters']
   [ [ , ] FORMATFILE = 'format_file_path' ]   
   [ [ , ] FIELDTERMINATOR = 'field_terminator' ]   
   [ [ , ] ROWTERMINATOR = 'row_terminator' ]   
    )]   

ArgumentsArguments

database_namedatabase_name
Nom de la base de données qui contient la table ou la vue spécifiée.Is the database name in which the specified table or view resides. S'il n'est pas spécifié, la base de données actuelle est utilisée.If not specified, this is the current database.

schema_nameschema_name
Nom du schéma de la table ou de la vue.Is the name of the table or view schema. schema_name est facultatif si le schéma par défaut de l’utilisateur réalisant l’opération d’importation en bloc est le schéma de la table ou de la vue spécifiée.schema_name is optional if the default schema for the user performing the bulk-import operation is schema of the specified table or view. Si schema n’est pas spécifié et que le schéma par défaut de l’utilisateur réalisant l’opération d’importation en bloc diffère de celui de la table ou de la vue spécifiée, SQL ServerSQL Server retourne un message d’erreur et l’opération d’importation en bloc est annulée.If schema is not specified and the default schema of the user performing the bulk-import operation is different from the specified table or view, SQL ServerSQL Server returns an error message, and the bulk-import operation is canceled.

table_nametable_name
Nom de la table ou de la vue dans laquelle les données doivent être importées en bloc.Is the name of the table or view to bulk import data into. Seules des vues dans lesquelles toutes les colonnes font référence à la même table de base peuvent être utilisées.Only views in which all columns refer to the same base table can be used. Pour plus d’informations sur les restrictions relatives au chargement des données dans les vues, consultez INSERT (Transact-SQL).For more information about the restrictions for loading data into views, see INSERT (Transact-SQL).

' data_file '' data_file '
Chemin d'accès complet du fichier de données contenant les données à importer dans la table ou la vue spécifiée.Is the full path of the data file that contains data to import into the specified table or view. BULK INSERT peut importer des données à partir d'un disque (réseau, disquette, disque dur, etc.).BULK INSERT can import data from a disk (including network, floppy disk, hard disk, and so on).

data_file doit spécifier un chemin valide à partir du serveur où SQL ServerSQL Server s’exécute.data_file must specify a valid path from the server on which SQL ServerSQL Server is running. Si data_file correspond à un fichier distant, spécifiez le nom UNC (Universal Naming Convention).If data_file is a remote file, specify the Universal Naming Convention (UNC) name. Un nom UNC se présente sous la forme \\nom_système\nom_partage\chemin\nom_fichier.A UNC name has the form \\Systemname\ShareName\Path\FileName. Par exemple, \\SystemX\DiskZ\Sales\update.txt.For example, \\SystemX\DiskZ\Sales\update.txt.
S’applique à : SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1.Applies to: SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1.
À partir de SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP1.1, le data_file peut être dans le Stockage Blob Azure.Beginning with SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP1.1, the data_file can be in Azure blob storage.

' data_source_name ' ' data_source_name '
S’applique à : SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1.Applies to: SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1.
Source de données externe nommée pointant vers l’emplacement de Stockage Blob Azure du fichier qui sera importé.Is a named external data source pointing to the Azure Blob storage location of the file that will be imported. La source de données externe doit être créée à l’aide de l’option TYPE = BLOB_STORAGE ajoutée dans SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1.The external data source must be created using the TYPE = BLOB_STORAGE option added in SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1. Pour plus d’informations, consultez CRÉER UNE SOURCE DE DONNÉES EXTERNES.For more information, see CREATE EXTERNAL DATA SOURCE.

BATCHSIZE =batch_sizeBATCHSIZE =batch_size
Indique le nombre de lignes contenues dans un lot.Specifies the number of rows in a batch. Chaque lot est copié sur le serveur comme une transaction unique.Each batch is copied to the server as one transaction. En cas d'échec, SQL ServerSQL Server valide ou annule la transaction pour chaque lot.If this fails, SQL ServerSQL Server commits or rolls back the transaction for every batch. Par défaut, toutes les données du fichier spécifié constituent un seul lot.By default, all data in the specified data file is one batch. Pour plus d'informations sur les performances, consultez la section « Notes » plus loin dans cette rubrique.For information about performance considerations, see "Remarks," later in this topic.

CHECK_CONSTRAINTSCHECK_CONSTRAINTS
Spécifie que toutes les contraintes sur la table ou vue cible doivent être vérifiées pendant l'opération d'importation en bloc.Specifies that all constraints on the target table or view must be checked during the bulk-import operation. Sans l’option CHECK_CONSTRAINTS, toute contrainte CHECK et FOREIGN KEY est ignorée. Après l’opération, la contrainte sur la table est marquée comme non approuvée.Without the CHECK_CONSTRAINTS option, any CHECK and FOREIGN KEY constraints are ignored, and after the operation, the constraint on the table is marked as not-trusted.

Note

Les contraintes UNIQUE et PRIMARY KEY sont toujours appliquées.UNIQUE, and PRIMARY KEY constraints are always enforced. Lors de l'importation dans une colonne de type character définie avec une contrainte NOT NULL, BULK INSERT insère une chaîne vide si aucune valeur n'est spécifiée dans le fichier texte.When importing into a character column that is defined with a NOT NULL constraint, BULK INSERT inserts a blank string when there is no value in the text file.

À un certain moment, il devient nécessaire d'examiner les contraintes définies sur l'ensemble de la table.At some point, you must examine the constraints on the whole table. Si la table n’était pas vide avant l’opération d’importation en bloc, le coût de la revalidation de la contrainte peut dépasser celui de l’application des contraintes CHECK aux données incrémentielles.If the table was non-empty before the bulk-import operation, the cost of revalidating the constraint may exceed the cost of applying CHECK constraints to the incremental data.

Il peut notamment convenir de désactiver les contraintes (comportement par défaut) si les données d'entrée contiennent des lignes qui violent des contraintes.A situation in which you might want constraints disabled (the default behavior) is if the input data contains rows that violate constraints. Une fois les contraintes CHECK désactivées, vous pouvez importer les données, puis utiliser les instructions Transact-SQLTransact-SQL pour supprimer les données non valides.With CHECK constraints disabled, you can import the data and then use Transact-SQLTransact-SQL statements to remove the invalid data.

Note

L'option MAXERRORS ne s'applique pas à la vérification des contraintes.The MAXERRORS option does not apply to constraint checking.

CODEPAGE = { ' ACP ' | ' OEM ' | ' RAW ' | 'code_page' }CODEPAGE = { ' ACP ' | ' OEM ' | ' RAW ' | 'code_page' }
Indique la page de codes des données dans le fichier.Specifies the code page of the data in the data file. CODEPAGE n’est justifié que si les données contiennent des colonnes de type char, varcharou text dont les valeurs de caractères sont supérieures à 127 ou inférieures à 32.CODEPAGE is relevant only if the data contains char, varchar, or text columns with character values greater than 127 or less than 32.

Important

CODEPAGE n’est pas une option prise en charge sur Linux.CODEPAGE is not a supported option on Linux.

Note

MicrosoftMicrosoft vous recommande de spécifier un nom de classement pour chaque colonne dans un fichier de format. recommends that you specify a collation name for each column in a format file.

Valeur CODEPAGECODEPAGE value DescriptionDescription
ACPACP Les colonnes de type de données char, varchar ou text sont converties de la page de codes ANSIANSI/ MicrosoftMicrosoft Windows (ISO 1252) à la page de codes SQL ServerSQL Server.Columns of char, varchar, or text data type are converted from the ANSIANSI/ MicrosoftMicrosoft Windows code page (ISO 1252) to the SQL ServerSQL Server code page.
OEM (valeur par défaut)OEM (default) Les colonnes de type de données char, varchar ou text sont converties de la page de codes du système OEM à la page de codes SQL ServerSQL Server.Columns of char, varchar, or text data type are converted from the system OEM code page to the SQL ServerSQL Server code page.
RAWRAW Aucune conversion d'une page de codes vers une autre ne se produit ; ceci est l'option la plus rapide.No conversion from one code page to another occurs; this is the fastest option.
code_pagecode_page Numéro de la page de codes, par exemple 850.Specific code page number, for example, 850.

** Important *\* Les versions antérieures à la version SQL Server 2016 (13.x)SQL Server 2016 (13.x) ne prennent pas en charge la page de codes 65001 (encodage UTF-8).** Important *\* Versions prior to SQL Server 2016 (13.x)SQL Server 2016 (13.x) do not support code page 65001 (UTF-8 encoding).

DATAFILETYPE = { 'char' | 'native' | 'widechar' | 'widenative' }DATAFILETYPE = { 'char' | 'native' | 'widechar' | 'widenative' }
Spécifie que BULK INSERT réalise l'opération d'importation en utilisant la valeur définie pour le type de fichier de données.Specifies that BULK INSERT performs the import operation using the specified data-file type value.

Valeur DATAFILETYPEDATAFILETYPE value Toutes les données représentées dans :All data represented in:
char (par défaut)char (default) Format caractères.Character format.

Pour plus d’informations, consultez Utiliser le format caractère pour importer ou exporter des données (SQL Server).For more information, see Use Character Format to Import or Export Data (SQL Server).
nativenative Types de données (base de données) natif.Native (database) data types. Créer le fichier de données natif en important en bloc les données à partir de SQL ServerSQL Server à l’aide de l’utilitaire bcp.Create the native data file by bulk importing data from SQL ServerSQL Server using the bcp utility.

La valeur native offre de meilleures performances que la valeur char.The native value offers a higher performance alternative to the char value.

Pour plus d’informations, consultez Utiliser le format natif Unicode pour importer ou exporter des données (SQL Server).For more information, see Use Native Format to Import or Export Data (SQL Server).
widecharwidechar Caractères Unicode.Unicode characters.

Pour plus d’informations, consultez Utiliser le format caractère Unicode pour importer ou exporter des données (SQL Server).For more information, see Use Unicode Character Format to Import or Export Data (SQL Server).
widenativewidenative Types de données (base de données) natif, à l’exception des colonnes de type char, varchar et text dans lesquelles les données sont stockées au format Unicode.Native (database) data types, except in char, varchar, and text columns, in which data is stored as Unicode. Créez le fichier de données widenative en important en bloc les données à partir de SQL ServerSQL Server à l’aide de l’utilitaire bcp.Create the widenative data file by bulk importing data from SQL ServerSQL Server using the bcp utility.

La valeur widenative offre de meilleures performances que la valeur widechar.The widenative value offers a higher performance alternative to widechar. Si le fichier de données contient des caractères étendus ANSIANSI, sélectionnez widenative.If the data file contains ANSIANSI extended characters, specify widenative.

Pour plus d’informations, consultez Utiliser le format natif Unicode pour importer ou exporter des données (SQL Server).For more information, see Use Unicode Native Format to Import or Export Data (SQL Server).

ERRORFILE ='file_name'ERRORFILE ='file_name'
Fichier utilisé pour collecter les lignes comportant des erreurs de mise en forme et impossibles à convertir en un ensemble de lignes OLE DB.Specifies the file used to collect rows that have formatting errors and cannot be converted to an OLE DB rowset. Ces lignes sont copiées « en l'état » du fichier de données vers ce fichier d'erreur.These rows are copied into this error file from the data file "as is."

Le fichier d'erreur est créé lors de l'exécution de la commande.The error file is created when the command is executed. Une erreur se produit si le fichier existe déjà.An error occurs if the file already exists. De plus, un fichier de contrôle portant l'extension .ERROR.txt est créé.Additionally, a control file that has the extension .ERROR.txt is created. Il fait référence à chacune des lignes du fichier d'erreur et propose un diagnostic.This references each row in the error file and provides error diagnostics. Dès que les erreurs ont été corrigées, les données peuvent être chargées.As soon as the errors have been corrected, the data can be loaded.
S’applique à : SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1.Applies to: SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1. À partir de SQL Server 2017 (14.x)SQL Server 2017 (14.x), error_file_path peut se trouver dans Stockage Blob Azure.Beginning with SQL Server 2017 (14.x)SQL Server 2017 (14.x), the error_file_path can be in Azure blob storage.

'errorfile_data_source_name''errorfile_data_source_name'
S’applique à : SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1.Applies to: SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1. Source de données externe nommée pointant vers l’emplacement de Stockage Blob Azure du fichier d’erreur contenant les erreurs détectées lors de l’importation.Is a named external data source pointing to the Azure Blob storage location of the error file that will contain errors found during the import. La source de données externe doit être créée à l’aide de l’option TYPE = BLOB_STORAGE ajoutée dans SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1.The external data source must be created using the TYPE = BLOB_STORAGE option added in SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1. Pour plus d’informations, consultez CRÉER UNE SOURCE DE DONNÉES EXTERNES.For more information, see CREATE EXTERNAL DATA SOURCE.

FIRSTROW =first_rowFIRSTROW =first_row
Numéro de la première ligne à charger.Specifies the number of the first row to load. La valeur par défaut est la première ligne du fichier de données spécifié.The default is the first row in the specified data file. FIRSTROW commence à 1.FIRSTROW is 1-based.

Note

L'attribut FIRSTROW n'est pas destiné à ignorer les en-têtes de colonnes.The FIRSTROW attribute is not intended to skip column headers. Le fait d'ignorer des en-têtes n'est pas pris en charge par l'instruction BULK INSERT.Skipping headers is not supported by the BULK INSERT statement. Si des lignes sont ignorées, le Moteur de base de données SQL ServerSQL Server Database Engine examine uniquement les marques de fin de champ et ne valide pas les données figurant dans les champs des lignes ignorées.When skipping rows, the Moteur de base de données SQL ServerSQL Server Database Engine looks only at the field terminators, and does not validate the data in the fields of skipped rows.

FIRE_TRIGGERSFIRE_TRIGGERS
Spécifie que tous les déclencheurs d'insertion définis sur la table de destination seront exécutés au cours de l'opération d'importation en bloc.Specifies that any insert triggers defined on the destination table execute during the bulk-import operation. Si des déclencheurs sont définis pour les opérations INSERT réalisées sur la table cible, ils sont activés à la fin de chaque lot.If triggers are defined for INSERT operations on the target table, they are fired for every completed batch.

Si FIRE_TRIGGERS n’est pas spécifié, aucun déclencheur d’insertion ne s’exécute.If FIRE_TRIGGERS is not specified, no insert triggers execute.

FORMATFILE_DATASOURCE = 'data_source_name'FORMATFILE_DATASOURCE = 'data_source_name'
S’applique à : SQL Server 2017 (14.x)SQL Server 2017 (14.x) 1.1.Applies to: SQL Server 2017 (14.x)SQL Server 2017 (14.x) 1.1.
Source de données externe nommée pointant vers l’emplacement de Stockage Blob Azure du fichier de format qui définira le schéma des données importées.Is a named external data source pointing to the Azure Blob storage location of the format file that will define the schema of imported data. La source de données externe doit être créée à l’aide de l’option TYPE = BLOB_STORAGE ajoutée dans SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1.The external data source must be created using the TYPE = BLOB_STORAGE option added in SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1. Pour plus d’informations, consultez CRÉER UNE SOURCE DE DONNÉES EXTERNES.For more information, see CREATE EXTERNAL DATA SOURCE.

KEEPIDENTITYKEEPIDENTITY
Indique que la ou les valeurs d'identité figurant dans le fichier de données importé doivent être utilisées dans la colonne d'identité.Specifies that identity value or values in the imported data file are to be used for the identity column. Si KEEPIDENTITY n'est pas spécifié, les valeurs d'identité de cette colonne sont vérifiées mais pas importées, et SQL ServerSQL Server affecte automatiquement des valeurs uniques en fonction de la valeur initiale et d'un incrément spécifié lors de la création de la table.If KEEPIDENTITY is not specified, the identity values for this column are verified but not imported and SQL ServerSQL Server automatically assigns unique values based on the seed and increment values specified during table creation. Si le fichier de données ne contient pas de valeurs pour la colonne d'identité de la table ou de la vue, utilisez un fichier de format pour indiquer que la colonne d'identité ne doit pas être prise en compte lors de l'importation des données ; dans ce cas, SQL ServerSQL Server attribue automatiquement des valeurs uniques à la colonne.If the data file does not contain values for the identity column in the table or view, use a format file to specify that the identity column in the table or view is to be skipped when importing data; SQL ServerSQL Server automatically assigns unique values for the column. Pour plus d’informations, consultez DBCC CHECKIDENT (Transact-SQL).For more information, see DBCC CHECKIDENT (Transact-SQL).

Pour plus d’informations sur la conservation des valeurs d’identité, consultez Conserver des valeurs d’identité lors de l’importation de données en bloc (SQL Server).For more information, see about keeping identify values see Keep Identity Values When Bulk Importing Data (SQL Server).

KEEPNULLSKEEPNULLS
Spécifie que pendant l'importation en bloc les colonnes vides doivent conserver la valeur NULL au lieu d'insérer des valeurs par défaut dans ces colonnes.Specifies that empty columns should retain a null value during the bulk-import operation, instead of having any default values for the columns inserted. Pour plus d’informations, consultez Conserver les valeurs NULL ou utiliser la valeur par défaut lors de l’importation en bloc (SQL Server).For more information, see Keep Nulls or Use Default Values During Bulk Import (SQL Server).

KILOBYTES_PER_BATCH = kilobytes_per_batchKILOBYTES_PER_BATCH = kilobytes_per_batch
Indique le nombre approximatif de kilo-octets (Ko) de données par lot sous la forme kilobytes_per_batch.Specifies the approximate number of kilobytes (KB) of data per batch as kilobytes_per_batch. Par défaut, KILOBYTES_PER_BATCH est inconnu.By default, KILOBYTES_PER_BATCH is unknown. Pour plus d'informations sur les performances, consultez la section « Notes » plus loin dans cette rubrique.For information about performance considerations, see "Remarks," later in this topic.

LASTROW=last_rowLASTROW=last_row
Numéro de la dernière ligne à charger.Specifies the number of the last row to load. La valeur par défaut est 0, c'est-à-dire la dernière ligne du fichier de données spécifié.The default is 0, which indicates the last row in the specified data file.

MAXERRORS = max_errorsMAXERRORS = max_errors
Nombre maximal d'erreurs de syntaxe tolérées dans les données avant l'annulation de l'importation en bloc.Specifies the maximum number of syntax errors allowed in the data before the bulk-import operation is canceled. Chaque ligne ne pouvant pas être importée par l'opération d'importation en bloc est ignorée et compte comme une erreur.Each row that cannot be imported by the bulk-import operation is ignored and counted as one error. Si max_errors n’est pas spécifié, la valeur par défaut est de 10.If max_errors is not specified, the default is 10.

Note

L’option MAX_ERRORS ne s’applique pas aux vérifications de contraintes ni à la conversion des types de données money et bigint.The MAX_ERRORS option does not apply to constraint checks or to converting money and bigint data types.

ORDER ( { column [ ASC | DESC ] } [ ,... n ] )ORDER ( { column [ ASC | DESC ] } [ ,... n ] )
Indique l'ordre de tri des données dans le fichier.Specifies how the data in the data file is sorted. Les performances de l'importation en bloc sont améliorées si les données importées sont triées en fonction de l'index cluster de la table, le cas échéant.Bulk import performance is improved if the data being imported is sorted according to the clustered index on the table, if any. Si le fichier de données est trié dans un autre ordre (c'est-à-dire pas dans l'ordre d'une clé d'index cluster) ou s'il n'y a pas d'index cluster dans la table, la clause ORDER est ignorée.If the data file is sorted in a different order, that is other than the order of a clustered index key or if there is no clustered index on the table, the ORDER clause is ignored. Les noms de colonnes fournis doivent être des noms de colonnes valides dans la table de destination.The column names supplied must be valid column names in the destination table. Par défaut, l'opération d'insertion en bloc considère que le fichier de données n'est pas ordonné.By default, the bulk insert operation assumes the data file is unordered. Pour une importation en bloc optimisée, SQL ServerSQL Server valide également le fait que les données importées sont triées.For optimized bulk import, SQL ServerSQL Server also validates that the imported data is sorted.

nn
Espace réservé qui indique que plusieurs colonnes peuvent être spécifiées.Is a placeholder that indicates that multiple columns can be specified.

ROWS_PER_BATCH =rows_per_batchROWS_PER_BATCH =rows_per_batch
Nombre approximatif de lignes de données que compte le fichier de données.Indicates the approximate number of rows of data in the data file.

Par défaut, toutes les données du fichier de données sont envoyées au serveur en une seule transaction, et le nombre de lignes du lot est inconnu de l'optimiseur de requête.By default, all the data in the data file is sent to the server as a single transaction, and the number of rows in the batch is unknown to the query optimizer. Si vous spécifiez ROWS_PER_BATCH (valeur > 0), le serveur utilise cette valeur pour optimiser l'importation en bloc.If you specify ROWS_PER_BATCH (with a value > 0) the server uses this value to optimize the bulk-import operation. La valeur spécifiée pour ROWS_PER_BATCH devrait correspondre à peu près au nombre réel de lignes.The value specified for ROWS_PER_BATCH should approximately the same as the actual number of rows. Pour plus d'informations sur les performances, consultez la section « Notes » plus loin dans cette rubrique.For information about performance considerations, see "Remarks," later in this topic.

TABLOCKTABLOCK
Spécifie qu'un verrou de niveau table est acquis pour la durée de l'opération d'importation en bloc.Specifies that a table-level lock is acquired for the duration of the bulk-import operation. Une table peut être chargée simultanément par plusieurs clients à condition qu'elle ne comporte pas d'index et que TABLOCK soit spécifié.A table can be loaded concurrently by multiple clients if the table has no indexes and TABLOCK is specified. Par défaut, le comportement du verrouillage est déterminé par l'option table lock on bulk load.By default, locking behavior is determined by the table option table lock on bulk load. En verrouillant la table pendant la durée de l'importation en bloc, vous réduisez la contention de verrouillage et augmentez considérablement, dans certains cas, les performances.Holding a lock for the duration of the bulk-import operation reduces lock contention on the table, in some cases can significantly improve performance. Pour plus d'informations sur les performances, consultez la section « Notes » plus loin dans cette rubrique.For information about performance considerations, see "Remarks," later in this topic.

For columnstore index.For columnstore index. Le comportement de verrouillage est différent, car il est divisé en interne en plusieurs ensembles de lignes.the locking behaviour is different because it is internally divided into multiple rowsets. Chaque thread charge des données exclusivement dans chaque ensemble de lignes en prenant un verrou X sur l’ensemble de lignes, ce qui autorise le chargement de données en parallèle avec des sessions de chargement de données simultanées.Each thread loads data exclusively into each rowset by taking a X lock on the rowset allowing parallel data load with concurrent data load sessions. L’utilisation de l’option TABLOCK fait en sorte que le thread prenne un verrou X sur la table (contrairement aux verrous BU pour des ensembles de lignes traditionnels), ce qui empêche les autres threads simultanés de charger des données en même temps.The use of TABLOCK option will cause thread to take an X lock on the table (unlike BU lock for traditional rowsets) which will prevent other concurrent threads to load data concurrently.

Options de format de fichier d’entréeInput file format options

FORMAT = 'CSV'FORMAT = 'CSV'
S’applique à : SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1.Applies to: SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1.
Spécifie un fichier de valeurs séparées par des virgules conforme à la norme RFC 4180.Specifies a comma separated values file compliant to the RFC 4180 standard.

FIELDQUOTE = 'field_quote'FIELDQUOTE = 'field_quote'
S’applique à : SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1.Applies to: SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1.
Spécifie un caractère qui sera utilisé comme caractère de guillemet dans le fichier CSV.Specifies a character that will be used as the quote character in the CSV file. Si vous ne spécifiez pas cet argument, le caractère guillemet (") servira de caractère guillemet tel que défini dans la norme RFC 4180.If not specified, the quote character (") will be used as the quote character as defined in the RFC 4180 standard.

FORMATFILE ='format_file_path'FORMATFILE ='format_file_path'
Spécifie le chemin complet au fichier de format.Specifies the full path of a format file. Un fichier de format décrit le fichier de données qui contient les réponses stockées créées à l’aide de l’utilitaire bcp dans la même table ou vue.A format file describes the data file that contains stored responses created by using the bcp utility on the same table or view. Le fichier de format doit être utilisé dans les contextes suivants :The format file should be used if:

  • Le fichier de données contient plus ou moins de colonnes que la table ou la vue.The data file contains greater or fewer columns than the table or view.

  • Les colonnes sont ordonnées différemment.The columns are in a different order.

  • Les délimiteurs de colonne sont différents.The column delimiters vary.

  • Le format des données présente d'autres changements.There are other changes in the data format. Les fichiers de format sont généralement créés au moyen de l’utilitaire bcp, puis modifiés, au besoin, à l’aide d’un éditeur de texte.Format files are typically created by using the bcp utility and modified with a text editor as needed. Pour plus d’informations, consultez bcp Utility.For more information, see bcp Utility.

S’applique à : SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1.Applies to: SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1.
À partir de SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1, format_file_path peut être dans Stockage Blob Azure.Beginning with SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1, the format_file_path can be in Azure blob storage.

FIELDTERMINATOR ='field_terminator'FIELDTERMINATOR ='field_terminator'
Spécifie la marque de fin de champ à utiliser pour les fichiers de données de type char et widechar.Specifies the field terminator to be used for char and widechar data files. La marque de fin de champ par défaut est le caractère de tabulation (\t).The default field terminator is \t (tab character). Pour plus d’informations, consultez Spécifier des indicateurs de fin de champ et de fin de ligne (SQL Server).For more information, see Specify Field and Row Terminators (SQL Server).

ROWTERMINATOR ='row_terminator'ROWTERMINATOR ='row_terminator'
Spécifie le délimiteur de fin de ligne à utiliser pour les fichiers de données de type char et widechar.Specifies the row terminator to be used for char and widechar data files. Par défaut, il s’agit de \r\n (caractère de nouvelle ligne).The default row terminator is \r\n (newline character). Pour plus d’informations, consultez Spécifier des indicateurs de fin de champ et de fin de ligne (SQL Server).For more information, see Specify Field and Row Terminators (SQL Server).

CompatibilitéCompatibility

BULK INSERT impose une validation et un contrôle stricts des données lues dans un fichier qui pourraient faire échouer les scripts existants si ces derniers s'exécutent sur des données non valides.BULK INSERT enforces strict data validation and data checks of data read from a file that could cause existing scripts to fail when they are executed on invalid data. Par exemple, BULK INSERT vérifie que :For example, BULK INSERT verifies that:

  • Les représentations en mode natif des types de données float ou real sont valides.The native representations of float or real data types are valid.

  • les données Unicode comportent un nombre d'octets pair.Unicode data has an even-byte length.

Types de donnéesData Types

Conversion du type de données String en type DecimalString-to-Decimal Data Type Conversions

Les conversions de type de données String (chaîne) en Decimal (décimal) utilisées dans BULK INSERT suivent les mêmes règles que la fonction Transact-SQLTransact-SQL CONVERT, qui rejette les chaînes représentant des valeurs numériques qui utilisent la notation scientifique.The string-to-decimal data type conversions used in BULK INSERT follow the same rules as the Transact-SQLTransact-SQL CONVERT function, which rejects strings representing numeric values that use scientific notation. BULK INSERT traite donc ce genre de chaînes comme des valeurs non valides et signale des erreurs de conversion.Therefore, BULK INSERT treats such strings as invalid values and reports conversion errors.

Pour contourner ce problème, utilisez un fichier de format permettant d’importer en bloc des données de type float à notation scientifique dans une colonne décimale.To work around this behavior, use a format file to bulk import scientific notation float data into a decimal column. Dans le fichier de format, décrivez explicitement la colonne comme étant de type real ou float.In the format file, explicitly describe the column as real or float data. Pour plus d’informations sur ces types de données, consultez float et real (Transact-SQL).For more information about these data types, see float and real (Transact-SQL).

Note

Les fichiers de format représentent des données real en tant que type de données SQLFLT4, et des données float en tant que type de données SQLFLT8.Format files represent real data as the SQLFLT4 data type and float data as the SQLFLT8 data type. Pour plus d’informations sur les fichiers de format non-XML, consultez Spécifier le type de stockage de fichiers à l’aide de bcp (SQL Server).For information about non-XML format files, see Specify File Storage Type by Using bcp (SQL Server).

Exemple d'importation d'une valeur numérique qui utilise la notation scientifiqueExample of Importing a Numeric Value that Uses Scientific Notation

Cet exemple utilise la table suivante :This example uses the following table:

CREATE TABLE t_float(c1 float, c2 decimal (5,4));  

L'utilisateur veut importer des données en bloc dans la table t_float.The user wants to bulk import data into the t_float table. Le fichier de données, C:\t_float-c.dat, contient des données float à notation scientifique, par exemple :The data file, C:\t_float-c.dat, contains scientific notation float data; for example:

8.0000000000000002E-28.0000000000000002E-2  

Cependant, l'instruction BULK INSERT ne peut pas importer ces données directement dans t_float, car sa deuxième colonne, c2, utilise le type de données decimal.However, BULK INSERT cannot import this data directly into t_float, because its second column, c2, uses the decimal data type. Un fichier de format est donc nécessaire,Therefore, a format file is necessary. Il doit mapper les données float à notation scientifique au format décimal de la colonne c2.The format file must map the scientific notation float data to the decimal format of column c2.

Le fichier de format suivant utilise le type de données SQLFLT8 pour établir la correspondance entre le deuxième champ de données et la deuxième colonne :The following format file uses the SQLFLT8 data type to map the second data field to the second column:

<?xml version="1.0"?> 
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<RECORD> 
<FIELD ID="1" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="30"/> 
<FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="30"/>  </RECORD>  <ROW> 
<COLUMN SOURCE="1" NAME="c1" xsi:type="SQLFLT8"/> 
<COLUMN SOURCE="2" NAME="c2" xsi:type="SQLFLT8"/>  </ROW> </BCPFORMAT> 

Si vous voulez opter pour ce fichier de format (avec le nom de fichier C:\t_floatformat-c-xml.xml) afin d'importer les données de test dans la table de test, exécutez l'instruction Transact-SQLTransact-SQL suivante :To use this format file (using the file name C:\t_floatformat-c-xml.xml) to import the test data into the test table, issue the following Transact-SQLTransact-SQL statement:

BULK INSERT bulktest..t_float  
FROM 'C:\t_float-c.dat' WITH (FORMATFILE='C:\t_floatformat-c-xml.xml');  
GO  

Types de données pour l'importation et l'exportation en bloc de documents SQLXMLData Types for Bulk Exporting or Importing SQLXML Documents

Pour exporter ou importer en bloc des données SQLXML, utilisez l'un des types de données ci-dessous dans votre fichier de format :To bulk export or import SQLXML data, use one of the following data types in your format file:

Type de donnéesData type EffetEffect
SQLCHAR ou SQLVARCHARSQLCHAR or SQLVARCHAR Les données sont envoyées dans la page de codes du client ou dans la page de codes impliquée par le classement.The data is sent in the client code page or in the code page implied by the collation). Le résultat est le même que si vous définissiez la propriété DATAFILETYPE ='char' sans spécifier de fichier de format.The effect is the same as specifying the DATAFILETYPE ='char' without specifying a format file.
SQLNCHAR ou SQLNVARCHARSQLNCHAR or SQLNVARCHAR Les données sont envoyées au format Unicode.The data is sent as Unicode. Le résultat est le même que si vous définissiez la propriété DATAFILETYPE = 'widechar' sans spécifier de fichier de format.The effect is the same as specifying the DATAFILETYPE = 'widechar' without specifying a format file.
SQLBINARY ou SQLVARBINSQLBINARY or SQLVARBIN Les données sont envoyées sans être converties.The data is sent without any conversion.

Remarques d'ordre généralGeneral Remarks

Pour obtenir une comparaison de l'instruction BULK INSERT, de l'instruction INSERT ... SELECT * FROM OPENROWSET(BULK...), et de la commande bcp, consultez Importation et exportation en bloc de données (SQL Server).For a comparison of the BULK INSERT statement, the INSERT ... SELECT * FROM OPENROWSET(BULK...) statement, and the bcp command, see Bulk Import and Export of Data (SQL Server).

Pour plus d’informations sur la préparation des données en vue d’une importation en bloc, consultez Préparer des données en vue d’une exportation ou d’une importation en bloc (SQL Server).For information about preparing data for bulk import, see Prepare Data for Bulk Export or Import (SQL Server).

L'instruction BULK INSERT peut être exécutée dans une transaction définie par l'utilisateur pour importer des données dans une table ou une vue.The BULK INSERT statement can be executed within a user-defined transaction to import data into a table or view. Pour utiliser des correspondances multiples pour l'importation en bloc de données, une transaction peut éventuellement spécifier la clause BATCHSIZE dans l'instruction BULK INSERT.Optionally, to use multiple matches for bulk importing data, a transaction can specify the BATCHSIZE clause in the BULK INSERT statement. Si une transaction sur plusieurs lots est restaurée, chaque lot que la transaction a envoyé à SQL ServerSQL Server est restaurée.If a multiple-batch transaction is rolled back, every batch that the transaction has sent to SQL ServerSQL Server is rolled back.

InteropérabilitéInteroperability

Importation des données d'un fichier CSVImporting Data from a CSV file

À partir de SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1, BULK INSERT prend en charge le format CSV.Beginning with SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1, BULK INSERT supports the CSV format.
Avant SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1, les fichiers CSV ne sont pas pris en charge par les opérations d’importation en bloc SQL ServerSQL Server.Before SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1, comma-separated value (CSV) files are not supported by SQL ServerSQL Server bulk-import operations. Toutefois, dans certains cas, un fichier CSV peut être utilisé comme fichier de données pour une importation en bloc de données dans SQL ServerSQL Server.However, in some cases, a CSV file can be used as the data file for a bulk import of data into SQL ServerSQL Server. Pour plus d’informations sur la configuration requise pour importer des données à partir d’un fichier de données CSV, consultez Préparer des données en vue d’une exportation ou d’une importation en bloc (SQL Server).For information about the requirements for importing data from a CSV data file, see Prepare Data for Bulk Export or Import (SQL Server).

Comportement de journalisationLogging Behavior

Pour savoir à quel moment les opérations d’insertion de ligne effectuées par l’importation en bloc sont consignées dans le journal des transactions, consultez Conditions requises pour une journalisation minimale dans l’importation en bloc.For information about when row-insert operations that are performed by bulk import are logged in the transaction log, see Prerequisites for Minimal Logging in Bulk Import.

RestrictionsRestrictions

Lorsque vous utilisez un fichier de format avec BULK INSERT, vous pouvez spécifier jusqu'à 1 024 champs.When using a format file with BULK INSERT, you can specify up to 1024 fields only. Il s'agit du nombre maximal de colonnes autorisé dans une table.This is same as the maximum number of columns allowed in a table. Si vous utilisez BULK INSERT avec un fichier de données qui contient plus de 1 024 champs, BULK INSERT génère l'erreur 4 822.If you use BULK INSERT with a data file that contains more than 1024 fields, BULK INSERT generates the 4822 error. L’utilitaire bcp ne présentant pas cette limitation, les fichiers de données qui contiennent plus de 1024 champs utilisent la commande bcp.The bcp utility does not have this limitation, so for data files that contain more than 1024 fields, use the bcp command.

Considérations relatives aux performancesPerformance Considerations

Si le nombre de pages à vider dans un lot unique dépasse un seuil interne, une analyse complète du pool de mémoires tampons peut s'effectuer afin d'identifier les pages à vider lors de la validation du lot.If the number of pages to be flushed in a single batch exceeds an internal threshold, a full scan of the buffer pool might occur to identify which pages to flush when the batch commits. Cette analyse complète peut nuire aux performances de l'importation en bloc.This full scan can hurt bulk-import performance. Le dépassement du seuil interne se produit lorsqu'un pool de mémoires tampons de grande taille est associé à un sous-système d'E/S lent.A likely case of exceeding the internal threshold occurs when a large buffer pool is combined with a slow I/O subsystem. Pour éviter tout dépassement de mémoire tampon sur les ordinateurs de grande capacité, évitez d'utiliser l'indication TABLOCK (qui entraîne la suppression des optimisations en bloc) ou utilisez une taille de lot plus petite (qui permet de conserver les optimisations en bloc).To avoid buffer overflows on large machines, either do not use the TABLOCK hint (which will remove the bulk optimizations) or use a smaller batch size (which preserves the bulk optimizations).

En raison de la diversité des ordinateurs, nous vous recommandons de tester différentes tailles de lot avec votre charge de données pour trouver la solution la plus adaptée.Because computers vary, we recommend that you test various batch sizes with your data load to find out what works best for you.

SécuritéSecurity

Délégation de compte de sécurité (emprunt d'identité)Security Account Delegation (Impersonation)

Si un utilisateur a recours à une connexion SQL ServerSQL Server , le profil de sécurité du compte du processus SQL ServerSQL Server est alors utilisé.If a user uses a SQL ServerSQL Server login, the security profile of the SQL ServerSQL Server process account is used. Une connexion via l'authentification SQL Server ne peut pas être authentifiée en dehors du moteur de base de données.A login using SQL Server authentication cannot be authenticated outside of the Database Engine. Par conséquence, lorsqu'une commande BULK INSERT est initiée par une connexion via l'authentification SQL Server, la connexion aux données s'effectue à l'aide du contexte de sécurité du compte du processus SQL Server (compte utilisé par le service de moteur de base de données SQL Server).Therefore, when a BULK INSERT command is initiated by a login using SQL Server authentication, the connection to the data is made using the security context of the SQL Server process account (the account used by the SQL Server Database Engine service). Pour pouvoir lire les données sources, vous devez octroyer au compte utilisé par le moteur de base de données SQL Server l'accès aux données sources. Par opposition, si un utilisateur SQL ServerSQL Server s'est connecté via l'authentification Windows, il peut lire uniquement les fichiers accessibles par le compte d'utilisateur, indépendamment du profil de sécurité du processus SQL ServerSQL Server.To successfully read the source data you must grant the account used by the SQL Server Database Engine, access to the source data.In contrast, if a SQL ServerSQL Server user logs on by using Windows Authentication, the user can read only those files that can be accessed by the user account, regardless of the security profile of the SQL ServerSQL Server process.

Si vous exécutez l’instruction BULK INSERT à l’aide de sqlcmd ou osql à partir d’un ordinateur, en insérant les données dans SQL ServerSQL Server sur un deuxième ordinateur et en spécifiant un data_file sur un troisième ordinateur sous forme de chemin UNC, vous risquez de recevoir une erreur 4861.When executing the BULK INSERT statement by using sqlcmd or osql, from one computer, inserting data into SQL ServerSQL Server on a second computer, and specifying a data_file on third computer by using a UNC path, you may receive a 4861 error.

Pour résoudre cette erreur, utilisez l’authentification SQL ServerSQL Server et spécifiez une connexion SQL ServerSQL Server utilisant le profil de sécurité du compte de processus SQL ServerSQL Server, ou configurez Windows de façon à activer la délégation de compte de sécurité.To resolve this error, use SQL ServerSQL Server Authentication and specify a SQL ServerSQL Server login that uses the security profile of the SQL ServerSQL Server process account, or configure Windows to enable security account delegation. Pour plus d'informations sur l'activation d'un compte d'utilisateur en vue de son approbation pour la délégation, consultez l'aide de Windows.For information about how to enable a user account to be trusted for delegation, see Windows Help.

Pour plus d’informations sur les considérations relatives à l’utilisation de BULK INSERT, consultez Importer des données en bloc à l’aide de BULK INSERT ou OPENROWSET(BULK...) (SQL Server).For more information about this and other security considerations for using BULK INSERT, see Import Bulk Data by Using BULK INSERT or OPENROWSET(BULK...) (SQL Server).

AutorisationsPermissions

Requiert les autorisations INSERT et ADMINISTER BULK OPERATIONS.Requires INSERT and ADMINISTER BULK OPERATIONS permissions. Dans Azure SQL Database, les opérations INSERT et ADMINISTER DATABASE BULK OPERATIONS sont nécessaires.In Azure SQL Database, INSERT and ADMINISTER DATABASE BULK OPERATIONS permissions are required. De plus, l'autorisation ALTER TABLE est nécessaire si une ou plusieurs des conditions suivantes sont réunies :Additionally, ALTER TABLE permission is required if one or more of the following is true:

  • Des contraintes existent et l'option CHECK_CONSTRAINTS n'est pas spécifiée.Constraints exist and the CHECK_CONSTRAINTS option is not specified.

    Note

    La désactivation des contraintes est le comportement par défaut.Disabling constraints is the default behavior. Pour vérifier les contraintes explicitement, utilisez l'option CHECK_CONSTRAINTS.To check constraints explicitly, use the CHECK_CONSTRAINTS option.

  • Des déclencheurs existent et l'option FIRE_TRIGGER n'est pas spécifiée.Triggers exist and the FIRE_TRIGGER option is not specified.

    Note

    Par défaut, les déclencheurs ne sont pas activés.By default, triggers are not fired. Pour activer les déclencheurs explicitement, utilisez l'option FIRE_TRIGGER.To fire triggers explicitly, use the FIRE_TRIGGER option.

  • Vous utilisez l'option KEEPIDENTITY pour importer une valeur d'identité du fichier de données.You use the KEEPIDENTITY option to import identity value from data file.

ExemplesExamples

A.A. Importation des données d'un fichier à l'aide du caractère (|)Using pipes to import data from a file

L'exemple suivant importe des informations détaillées de commande dans la table AdventureWorks2012.Sales.SalesOrderDetail, à partir du fichier de données spécifié en utilisant le caractère | comme marque de fin de champ et |\n comme marque de fin de ligne.The following example imports order detail information into the AdventureWorks2012.Sales.SalesOrderDetail table from the specified data file by using a pipe (|) as the field terminator and |\n as the row terminator.

BULK INSERT AdventureWorks2012.Sales.SalesOrderDetail  
   FROM 'f:\orders\lineitem.tbl'  
   WITH   
      (  
         FIELDTERMINATOR =' |',  
         ROWTERMINATOR =' |\n'  
      );  

B.B. Utilisation de l'argument FIRE_TRIGGERSUsing the FIRE_TRIGGERS argument

L'exemple suivant spécifie l'argument FIRE_TRIGGERS.The following example specifies the FIRE_TRIGGERS argument.

BULK INSERT AdventureWorks2012.Sales.SalesOrderDetail  
   FROM 'f:\orders\lineitem.tbl'  
   WITH  
     (  
        FIELDTERMINATOR =' |',  
        ROWTERMINATOR = ':\n',  
        FIRE_TRIGGERS  
      );  

C.C. Utilisation du retour à la ligne comme délimiteur de ligneUsing line feed as a row terminator

L'exemple suivant importe un fichier qui utilise le retour à la ligne comme marque de fin de ligne, par exemple une sortie UNIX :The following example imports a file that uses the line feed as a row terminator such as a UNIX output:

DECLARE @bulk_cmd varchar(1000);  
SET @bulk_cmd = 'BULK INSERT AdventureWorks2012.Sales.SalesOrderDetail  
FROM ''<drive>:\<path>\<filename>''   
WITH (ROWTERMINATOR = '''+CHAR(10)+''')';  
EXEC(@bulk_cmd);  

Note

En raison de la manière dont Microsoft Windows traite les fichiers texte (\n, est remplacé automatiquement par \r\n).Due to how Microsoft Windows treats text files (\n automatically gets replaced with \r\n).

D.D. Spécification d’une page de codesSpecifying a code page

L’exemple suivant montre comment spécifier une page de codes.The following example show how to specify a code page.

BULK INSERT MyTable  
FROM 'D:\data.csv'  
WITH  
( CODEPAGE = '65001',  
    DATAFILETYPE = 'char',  
    FIELDTERMINATOR = ','  
);  

E.E. Importation de données d’un fichier CSVImporting data from a CSV file

L’exemple suivant montre comment spécifier un fichier CSV.The following example show how to specify a CSV file.

BULK INSERT Sales.Invoices
FROM '\\share\invoices\inv-2016-07-25.csv'
WITH (FORMAT = 'CSV'); 

F.F. Importation de données à partir d’un fichier dans Stockage Blob AzureImporting data from a file in Azure blob storage

L’exemple suivant montre comment charger des données à partir d’un fichier CSV dans un emplacement Stockage Blob Azure qui a été configuré comme source de données externe.The following example shows how to load data from a csv file in an Azure blob storage location, which has been configured as an external data source. Cela nécessite des informations d’identification délimitées à la base de données avec une signature d’accès partagé.This requires a database scoped credential using a shared access signature.

BULK INSERT Sales.Invoices
FROM 'inv-2017-01-19.csv'
WITH (DATA_SOURCE = 'MyAzureInvoices',
     FORMAT = 'CSV'); 

Pour obtenir des exemples BULK INSERT complets, illustrant notamment la configuration des informations d’identification et de la source de données externe, consultez Exemples d’accès en bloc à des données dans Stockage Blob Azure.For complete BULK INSERT examples including configuring the credential and external data source, see Examples of Bulk Access to Data in Azure Blob Storage.

Autres exemplesAdditional Examples

Les rubriques suivantes fournissent d’autres exemples de la commande BULK INSERT :Other BULK INSERT examples are provided in the following topics:

Voir aussiSee Also

Importation et exportation en bloc de données (SQL Server) Bulk Import and Export of Data (SQL Server)
Utilitaire bcp bcp Utility
Fichiers de format pour l’importation ou l’exportation de données (SQL Server) Format Files for Importing or Exporting Data (SQL Server)
INSERT (Transact-SQL) INSERT (Transact-SQL)
OPENROWSET (Transact-SQL) OPENROWSET (Transact-SQL)
Préparer des données en vue d’une exportation ou d’une importation en bloc (SQL Server) Prepare Data for Bulk Export or Import (SQL Server)
sp_tableoption (Transact-SQL)sp_tableoption (Transact-SQL)