Partager via


bcp (utilitaire)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Base de données SQL dans Microsoft Fabric

L’utilitaire de programme de copie en bloc (bcp) copie en bloc des données entre une instance de Microsoft SQL Server et un fichier de données dans un format spécifié par l’utilisateur.

Pour utiliser bcp sur Linux, consultez Installer les outils en ligne de commande sqlcmd et bcp SQL Server sur Linux. Pour plus d’informations sur l’utilisation de bcp avec Azure Synapse Analytics, consultez Charger des données avec bcp.

L’utilitaire bcp permet d’importer un grand nombre de nouvelles lignes dans des tables SQL Server ou d’exporter des données de tables dans des fichiers de données. Sauf lorsqu’il est utilisé avec l’option queryout , l’utilitaire ne nécessite aucune connaissance de Transact-SQL. Pour importer des données dans une table, vous devez utiliser un fichier de format créé pour cette table ou comprendre la structure de la table et les types de données valides pour ses colonnes.

Remarque

Si vous utilisez bcp pour sauvegarder vos données, créez un fichier de format pour enregistrer le format de données. Les fichiers de donnéesbcpn’incluent pas de schéma ni d’informations de format, ce qui fait que si une table ou une vue est supprimée et si vous n’avez pas de fichier de format, il se peut que vous ne soyez pas en mesure d’importer les données.

Pour plus d’informations sur les conventions syntaxiques utilisées pour bcp, consultez Conventions de la syntaxe Transact-SQL.

Pour bcp sur Linux et macOS, consultez Considérations relatives à bcp sur Linux et macOS.

Télécharger la dernière version de l’utilitaire bcp

Les outils en ligne de commande sont en disponibilité générale (GA), mais ils sont publiés avec le package d’installation de SQL Server 2019 (15.x) et versions ultérieures.

Informations sur la version

  • Numéro de version : 15.0.4298.1
  • Numéro de build : 15.0.4298.1
  • Date de publication : 7 avril 2023

bcp prend en charge l’authentification Microsoft Entra, notamment la prise en charge de l’authentification multifacteur (MFA) pour Azure SQL Database, la base de données SQL dans Microsoft Fabric et Azure Synapse Analytics.

Remarque

Microsoft Entra ID était précédemment connu sous le nom d’Azure Active Directory (Azure AD).

Configuration requise

  • Windows 8, Windows 8.1, Windows 10, Windows 11
  • Windows Server 2016, Windows Server 2019, Windows Server 2022

Ce composant nécessite la dernière version de Microsoft ODBC Driver 17 for SQL Server.

Pour vérifier la version de bcp, exécutez la commande bcp -v et vérifiez que 15.0.4298.1 ou une version ultérieure est utilisée.

Prise en charge de TDS 8.0

SQL Server 2025 (17.x) Preview introduit la prise en charge de TDS 8.0 pour l’utilitaire bcp .

Syntaxe

bcp [database_name.] schema.{table_name | view_name | "query"}
    {in data_file | out data_file | queryout data_file | format nul}

    [-a packet_size]
    [-b batch_size]
    [-c]
    [-C { ACP | OEM | RAW | code_page } ]
    [-d database_name]
    [-D]
    [-e err_file]
    [-E]
    [-f format_file]
    [-F first_row]
    [-G Microsoft Entra authentication]
    [-h"hint [,...n]"]
    [-i input_file]
    [-k]
    [-K application_intent]
    [-l login_timeout]
    [-L last_row]
    [-m max_errors]
    [-n]
    [-N]
    [-o output_file]
    [-P password]
    [-q]
    [-r row_term]
    [-R]
    [-S [server_name[\instance_name]]]
    [-t field_term]
    [-T]
    [-U login_id]
    [-u]
    [-v]
    [-V (80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 | 170)]
    [-w]
    [-x]
    [-Y[s|m|o]]

Observations et limitations

  • L’utilitaire bcp présente une limitation que le message d’erreur affiche uniquement des caractères de 512 octets. Seuls les 512 premiers octets du message d’erreur s’affichent.

Considérations relatives à bcp sur Linux et macOS

  • Le terminateur de champ est un onglet (\t).

  • Le pointeur de ligne est une nouvelle ligne (\n).

  • Le mode caractère est le format préféré pour les fichiers de format bcp et les fichiers de données qui ne contiennent pas de caractères étendus.

  • Une barre oblique inverse (\) dans un argument de ligne de commande doit être placée entre guillemets ou échappée. Par exemple, pour spécifier un saut de ligne en tant que marque de fin de ligne personnalisée, vous devez utiliser l»un des mécanismes suivants :

    • -r\\n
    • -r"\n"
    • -r'\n'

Options de ligne de commande

Le tableau suivant répertorie les options de ligne de commande disponibles dans bcp et les systèmes d’exploitation qu’ils prennent en charge.

Option de ligne de commande Pris en charge sur Windows Pris en charge sur Linux et macOS
[database_name.]schéma. {table_name | view_name | « query »} Oui Oui
{indata_file | data_fileout data_file | queryoutdata_file | format nul} Oui Oui
-a packet_size Oui Oui
-b taille_du_lot Oui Oui
-c Oui Oui
-C { ACP | OEM | RAW | code_page } Oui Non
-d database_name Oui Oui
-D Oui Oui
-e err_file Oui Oui
-E Oui Oui
-f format_file Oui Oui
-F first_row Oui Oui
-G Authentification Microsoft Entra Oui Oui
-h"hint [,... n]" Oui Non
-i input_file Oui Non
-k Oui Oui
-K application_intent Oui Oui
-l login_timeout Oui Oui
-L dernière_ligne Oui Oui
-m max_errors Oui Oui
-n Oui Oui
-N Oui Non
-o output_file Oui Non
-P password Oui Oui
-q Oui Oui
-r row_term Oui Oui
-R Oui Oui
-S [server_name[\instance_name]] Oui Oui
-t field_term Oui Oui
-T Oui Oui
-U login_id Oui Oui
-u Oui 1 Oui
-v Oui Oui
-V (80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 | 170 ) Oui Non
-w Oui Oui
-x Oui Non
-Y[s|m|o] Oui 1 Oui

Oui1 SQL Server 2025 (17.x) Préversion et versions ultérieures.

database_name

Nom de la base de données qui contient la table ou la vue spécifiée. Sans autre indication, il s'agit de la base de données par défaut de l'utilisateur.

Vous pouvez également spécifier explicitement le nom de la base de données avec -d.

schéma

Nom du propriétaire de la table ou de la vue. schema est facultatif si l’utilisateur qui effectue l’opération est le propriétaire de la table ou de la vue. Si le schéma n’est pas spécifié et que l’utilisateur effectuant l’opération ne possède pas la table ou la vue spécifiée, SQL Server retourne un message d’erreur et l’opération est annulée.

table_name

Nom de la table de destination lors de l’importation de données dans SQL Server (in) ou nom de la table source lors de l’exportation de données à partir de SQL Server (out).

view_name

Nom de la vue de destination lors de la copie de données vers SQL Server (in) ou nom de la vue source lors de la copie de données à partir de SQL Server (out). Seules les vues dont toutes les colonnes référencent la même table peuvent être utilisées comme vues de destination. Pour plus d’informations sur les restrictions relatives à la copie des données dans les vues, consultez INSERT.

« query »

Une requête Transact-SQL qui retourne un jeu de résultats. Si la requête retourne plusieurs jeux de résultats, seul le premier jeu de résultats est copié dans le fichier de données ; les jeux de résultats suivants sont ignorés. Placez le nom de la requête entre guillemets doubles et tout élément imbriqué dans la requête entre guillemets simples. queryout doit également être spécifié uniquement lors d'une copie de données en bloc à partir d'une requête.

La requête peut référencer une procédure stockée du moment que toutes les tables référencées dans la procédure stockée existent avant l'exécution de l'instruction bcp. Par exemple, si la procédure stockée génère une table temp, l’instruction bcp échoue parce que la table temp est uniquement disponible au moment de l’exécution du programme et pas au moment de l’exécution de l’instruction. Dans ce cas, envisagez d’insérer les résultats de la procédure stockée dans une table, puis d’utiliser bcp pour copier les données de la table dans un fichier de données.

dans

Copie à partir d'un fichier dans une table ou une vue de base de données. indique la direction de la copie en bloc.

dehors

Copie dans un fichier à partir d'une table ou d'une vue de la base de données. indique la direction de la copie en bloc.

Si vous spécifiez un fichier existant, il est remplacé. Lorsque l’utilitaire bcp extrait des données, il représente une chaîne vide sous forme de chaîne null et une chaîne null sous forme de chaîne vide.

data_file

Chemin d'accès complet du fichier de données. Lors de l'importation en bloc de données vers SQL Server, le fichier de données contient les données à copier dans la table ou vue spécifiée. Lors de l'exportation en bloc de données à partir de SQL Server, le fichier de données contient les données provenant de la table ou vue. Le chemin d'accès peut compter entre 1 et 255 caractères. Le fichier de données peut contenir jusqu’à 2^63 - 1 lignes.

queryout

Copie à partir d'une requête et doit être spécifié uniquement lors d'une copie de données en bloc à partir d'une requête.

format

Crée un fichier de format basé sur l'option spécifiée (-n, -c, -w ou -N) et les délimiteurs de la table ou de la vue. Lors de la copie en bloc de données, la commande bcp peut faire référence à un fichier de format, ce qui évite d’avoir à ressaisir les informations de format de manière interactive. L'option format nécessite l'option -f ; la création d'un fichier de format XML nécessite également l'option -x. Pour plus d’informations, consultez Créer un fichier de format avec bcp (SQL Server). Vous devez spécifier nul comme valeur (format nul).

-a packet_size

Spécifie le nombre d’octets, par paquet réseau, envoyés depuis/vers le serveur. Vous pouvez définir une option de configuration du serveur au moyen de SQL Server Management Studio (ou de la procédure stockée système sp_configure ). Toutefois, la configuration du serveur peut être modifiée individuellement à l'aide de cette option. packet_size peut être compris entre 4 096 octets et 65 535 octets. Sa valeur par défaut est 4096.

L'augmentation de la taille des paquets peut améliorer les performances des opérations de copie en bloc. S'il est demandé une taille de paquet plus importante alors que cela n'est pas possible, la valeur par défaut est utilisée. Les statistiques de performance générées par bcp indiquent la taille de paquet utilisée.

-b batch_size

Nombre de lignes par lot de données importées. Chaque lot est importé et consigné dans un journal comme transaction distincte important le lot complet avant d'être validée. Par défaut, toutes les lignes du fichier de données sont importées comme un lot. Pour distribuer les lignes entre les différents lots, spécifiez une valeur de batch_size inférieure au nombre de lignes du fichier de données. Si la transaction d'un lot échoue, seules les insertions du lot actif sont restaurées. Les lots dont l'importation a été effectuée par des transactions validées ne sont pas affectés par une défaillance ultérieure.

N’utilisez pas cette option avec l’option -h "ROWS_PER_BATCH=<bb>".

-c

Effectue l'opération en utilisant un type de données caractères. Cette option n’affiche aucune invite pour aucun champ, mais utilise le type de données char comme type de stockage, n’ajoute pas de préfixe et emploie \t (tabulation) comme séparateur de champ et \r\n (nouvelle ligne) comme indicateur de fin de ligne. -c n’est pas compatible avec -w.

Pour plus d’informations, consultez Utiliser le format caractère pour importer ou exporter des données (SQL Server).

-C { ACP | OEM | RAW | code_page }

S’applique à : Windows uniquement. Non pris en charge sur Linux et macOS.

Indique la page de codes des données dans le fichier. L’utilisation decode_page n’est justifiée 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.

Vous devez spécifier un nom de classement pour chaque colonne dans un fichier de format, sauf lorsque vous souhaitez que l’option 65001 ait la priorité sur la spécification de la page de classement/de codes.

Valeur de la page de codes Descriptif
ACP ANSI/Microsoft Windows (ISO 1252).
OEM Page de codes par défaut du client. Il s'agit de la page de codes par défaut qui est utilisée si -C n'est pas spécifié.
RAW Aucune conversion d'une page de codes vers une autre n'a lieu. Il s'agit de l'option la plus rapide car aucune conversion n'a lieu.
<code_page> Numéro spécifique de la page de codes, par exemple 850.

Les versions antérieures à la version 13 (SQL Server 2016 (13.x)) ne prennent pas en charge la page de codes 65001 (encodage UTF-8). La version 13 et les versions ultérieures peuvent importer l’encodage UTF-8 pour les versions antérieures de SQL Server.

-d database_name

Spécifie la base de données à laquelle se connecter. Par défaut, bcp se connecte à la base de données par défaut de l'utilisateur. Si -d <database_name> et un nom en trois parties (database_name.schema.table, passé comme premier paramètre à bcp) sont spécifiés, une erreur se produit, car vous ne pouvez pas spécifier deux fois le nom de la base de données. Si database_name commence par un trait d’union (-) ou une barre oblique (/), n’ajoutez pas d’espace entre -d et le nom de la base de données.

-d

Fait en sorte que la valeur passée à l’option bcp -S soit interprétée comme un nom de source de données (DSN).

Un DSN peut être utilisé pour :

  • incorporer des options de pilote pour simplifier les lignes de commande,
  • appliquer les options de pilote qui ne sont pas autrement accessibles à partir de la ligne de commande telles que MultiSubnetFailover,
  • ou pour empêcher que les informations d’identification sensibles soient découvertes en tant qu’arguments de ligne de commande.

Pour plus d’informations, consultez la prise en charge de DSN dans sqlcmd et bcp.

-e err_file

Spécifie le chemin complet d’un fichier d’erreur utilisé pour stocker les lignes que l’utilitaire bcp n’a pas pu transférer du fichier à la base de données. Les messages d’erreur de la commande bcp sont transmis à la station de travail de l’utilisateur. Si cette option n’est pas utilisée, aucun fichier d’erreur n’est créé.

Si err_file commence par un trait d’union (-) ou une barre oblique (/), n’incluez pas d’espace entre -e et la valeur err_file.

-E

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é. Si -E n’est pas spécifié, les valeurs d’identité de cette colonne figurant dans le fichier de données importé ne sont pas prises en compte et SQL Server attribue automatiquement des valeurs uniques, basées sur la valeur initiale et sur un incrément spécifié durant la création de la table. Pour plus d’informations, consultez DBCC CHECKIDENT.

Si le fichier de données ne contient pas de valeurs pour la colonne d’identité dans la table ou la vue, utilisez un fichier de format pour spécifier que la colonne d’identité dans la table ou la vue doit être ignorée lors de l’importation de données. SQL Server affecte automatiquement des valeurs uniques pour la colonne.

L'option -E n'impose aucune autorisation spéciale. Pour plus d'informations, consultez la section « Remarques » plus loin dans cet article.

-f format_file

Spécifie le chemin complet au fichier de format. La signification de cette option dépend de l'environnement d'utilisation :

  • Si -f est utilisé avec l’option format , le fichier de format spécifié ( format_file ) est créé pour la table ou la vue spécifiée. Pour créer un fichier de format XML, spécifiez également l'option -x. Pour plus d’informations, consultez Créer un fichier de format avec bcp (SQL Server).

  • Utilisé avec l'option in ou out, -f nécessite un fichier de format existant.

    Remarque

    L'utilisation d'un fichier de format avec l'option in ou out est facultative. En l’absence de l’option -f, si -n, -c, -w ou -N n’est pas spécifié, la commande vous invite à fournir des informations de format et vous permet d’enregistrer vos réponses dans un fichier de format (dont le nom de fichier par défaut est bcp.fmt).

Si format_file commence par un trait d’union (-) ou une barre oblique (/), n’incluez pas d’espace entre -f et la valeur format_file.

-F première_ligne

Spécifie le numéro de la première ligne à exporter à partir d’une table ou à importer à partir d’un fichier de données. Ce paramètre nécessite une valeur supérieure à (>) 0 mais inférieure (<) ou égale au (=) nombre total de lignes. En l'absence de ce paramètre, la valeur par défaut est la première ligne du fichier.

first_row peut être un entier positif avec une valeur maximale de 2^63-1. -F est basé sur 1.

-G

S’applique à : Base de données Azure SQL, base de données SQL dans Microsoft Fabric, and Azure Synapse Analytics seulement.

Ce commutateur est utilisé par le client pour spécifier que l’utilisateur est authentifié avec l’ID Microsoft Entra. Le -G commutateur nécessite la version 14.0.3008.27 ou ultérieure. Pour déterminer votre version, exécutez bcp -v. Pour plus d’informations, consultez Utiliser l’authentification Microsoft Entra avec SQL Database ou Azure Synapse Analytics ou l’authentification dans la base de données SQL dans Microsoft Fabric.

Important

Sur Linux et macOS, l’authentification interactive Microsoft Entra n’est actuellement pas prise en charge. L'authentification intégrée Microsoft Entra nécessite Microsoft pilote ODBC 17 pour SQL Server version 17.6.1 ou ultérieure ainsi qu'un environnement Kerberos correctement configuré.

Pour vérifier si votre version de bcp prend en charge l’authentification Microsoft Entra, tapez bcp --help et vérifiez que -G apparaît dans la liste des arguments disponibles.

  • Nom d’utilisateur et mot de passe Microsoft Entra

    Si vous souhaitez utiliser un nom d’utilisateur et un mot de passe Microsoft Entra, vous pouvez fournir l’option -G et utiliser le nom d’utilisateur et le mot de passe en fournissant les options -U et -P.

    L’exemple suivant exporte des données à l’aide des identifiants de nom d’utilisateur et de mot de passe Microsoft Entra. L’exemple exporte la table bcptest de la base de données testdb à partir d’Azure Server aadserver.database.windows.net et stocke les données dans le fichier c:\last\data1.dat :

    bcp bcptest out "c:\last\data1.dat" -c -S aadserver.database.windows.net -d testdb -G -U alice@aadtest.onmicrosoft.com -P xxxxx
    

    L’exemple suivant importe des données à l’aide des identifiants d’un utilisateur Microsoft Entra. L’exemple importe des données du fichier c:\last\data1.dat dans la table bcptest pour la base de données testdb sur le serveur Azure aadserver.database.windows.net à l’aide du nom d’utilisateur et du mot de passe Microsoft Entra :

    bcp bcptest in "c:\last\data1.dat" -c -S aadserver.database.windows.net -d testdb -G -U alice@aadtest.onmicrosoft.com -P xxxxx
    
  • Authentification intégrée Microsoft Entra

    Pour l’authentification intégrée Microsoft Entra, fournissez l’option -G sans nom d’utilisateur ni mot de passe. Cette configuration nécessite que le compte d’utilisateur Windows actuel (le compte sous lequel la commande bcp est exécutée) soit fédéré avec Microsoft Entra ID :

    L’exemple suivant exporte des données à l’aide de l’authentification intégrée Microsoft Entra. L’exemple exporte la table bcptest de la base de données testdb sur le serveur logique aadserver.database.windows.net et stocke les données dans le fichier c:\last\data2.dat, à l’aide d’identifiants Windows fédérés avec Microsoft Entra ID :

    bcp bcptest out "c:\last\data2.dat" -S aadserver.database.windows.net -d testdb -G -c
    

    L’exemple suivant importe des données à l’aide de l’authentification intégrée Microsoft Entra. L’exemple importe des données du fichier c:\last\data2.dat dans la table bcptest de la base de données testdb sur le serveur logique aadserver.database.windows.net à l’aide d’identifiants Windows fédérés avec Microsoft Entra ID :

    bcp bcptest in "c:\last\data2.dat" -S aadserver.database.windows.net -d testdb -G -c
    
  • Microsoft Entra Managed Service Identity

    Important

    bcp est étroitement couplé avec le pilote. Les versions principales de bcp et du pilote dont un DSN est créé doivent être identiques. Pour déterminer votre version, exécutez bcp -v.

    L’exportation de données via bcp à l’aide d’un Managed Service Identity sur Windows nécessite la configuration d’un DSN.

    Pour configurer un DSN sur un ordinateur exécutant Windows :

    1. Appuyez sur la touche Windows de votre clavier

    2. Tapez ODBC et sélectionnez la version appropriée de l’administrateur de source de données ODBC

    3. Sélectionnez l’onglet utilisateur DSN ou Système DSN

    4. Sélectionnez Ajouter et suivez les invites

    5. Lorsque vous êtes invité à entrer un type d’authentification, sélectionnez l’authentification Azure Managed Service Identity

    6. Si vous avez une identité managée affectée par l’utilisateur, collez le Object (principal) ID de l’identité dans la zone ID de connexion en bas de l’onglet Authentification

    7. Pour configurer votre DSN, continuez à suivre les instructions.

    Pour une procédure pas à pas complète incluant des captures d’écran, consultez Création et modification de DSN dans l’IU.

    Une fois le DSN configuré, bcp peut ensuite être appelé à l’aide d’un indicateur -D pour indiquer que la valeur passée pour -S est un DSN.

    bcp bcptest out "c:\last\data1.dat" -c -D -S myDSN -d testdb
    

  • Jeton d’accès Microsoft Entra ID

    S’applique à : Linux et macOS uniquement. Windows n’est pas pris en charge.

    Les utilisateurs de bcp 17.8 et versions ultérieures, sur Linux et macOS, peuvent également s’authentifier avec un jeton. Les exemples suivants utilisent PowerShell sur Linux pour récupérer un jeton d’accès.

    Cet exemple récupère un jeton d’accès et le place dans un fichier pour exporter des données à l’aide d’une identité managée affectée par le système.

    Connect-AzAccount -Identity
    $access_token | cut -f 1 | tr -d '\n' | iconv -f ascii -t UTF-16LE > /tmp/tokenFile
    bcp bcptest out data2.dat -S aadserver.database.windows.net -d testdb -G -P /tmp/tokenFile -c
    

    Cet exemple passe un Client ID au paramètre -AccountId de Connect-AzAccount pour récupérer un jeton d'accès et le placer dans un fichier de jetons. Le jeton est ensuite utilisé pour exporter des données à l’aide de l’identité managée affectée par l’utilisateur spécifiée.

    Connect-AzAccount -Identity -AccountId 'client_id_of_user_assigned_managed_identity'
    $access_token | cut -f 1 | tr -d '\n' | iconv -f ascii -t UTF-16LE > /tmp/tokenFile
    bcp bcptest out data2.dat -S aadserver.database.windows.net -d testdb -G -P /tmp/tokenFile -c
    
  • Authentification interactive Microsoft Entra

    S’applique à : Windows uniquement. Linux et macOS ne sont pas pris en charge.

    L’authentification interactive Microsoft Entra, disponible pour toutes les versions Azure SQL et SQL Server 2022 (16.x) et ultérieures, vous permet d’utiliser une boîte de dialogue interactive pour l’authentification, qui prend également en charge l’authentification multifacteur.

    L’authentification interactive Microsoft Entra nécessite bcpversion 15.0.1000.34 ou ultérieure, et ODBC version 17.2 ou ultérieure.

    Pour activer l’authentification interactive, fournissez l’option -G avec le nom d’utilisateur (-U) uniquement, sans mot de passe.

    L’exemple suivant exporte des données à l’aide de l’authentification interactive Microsoft Entra, qui inclut la spécification du nom d’utilisateur d’un compte Microsoft Entra.

    Le mode interactif nécessite l’entrée manuelle d’un mot de passe. Pour les comptes sur lesquels l’authentification multifacteur est activée, suivez la méthode d’authentification MFA configurée.

    bcp bcptest out "c:\last\data1.dat" -c -S aadserver.database.windows.net -d testdb -G -U alice@aadtest.onmicrosoft.com
    

    Si vous utilisez un compte Windows provenant d’un domaine fédéré comme utilisateur Microsoft Entra, le nom d’utilisateur entré dans la ligne de commande doit contenir le domaine (par exemple, joe@contoso.com) :

    bcp bcptest out "c:\last\data1.dat" -c -S aadserver.database.windows.net -d testdb -G -U joe@contoso.com
    

    Si des utilisateurs invités existent dans un locataire Microsoft Entra spécifique et font partie d’un groupe qui existe dans Azure SQL Database qui dispose des autorisations de base de données pour exécuter la commande bcp, son alias d’utilisateur invité est utilisé (par exemple). keith0@adventure-works.com

-h "hints [, ... n]"

S’applique à : Windows uniquement. Non pris en charge sur Linux et macOS.

Indicateur ou indicateurs à utiliser lors de l'importation en bloc de données vers une table ou vue.

  • ORDER (colonne [ASC | DESC] [, ... n])

    Ordre de tri des données dans le fichier de données. 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. Si le fichier de données est trié dans un ordre différent, autrement dit, autre que l’ordre d’une clé d’index cluster, ou s’il n’y a pas d’index cluster sur la table, la ORDER clause est ignorée. Les noms de colonnes fournis doivent être des noms de colonnes valides dans la table de destination. Par défaut, bcp considère que le fichier de données n’est pas ordonné. Pour une importation en bloc optimisée, SQL Server valide également le fait que les données importées sont triées.

  • ROWS_PER_BATCH = bb

    Nombre de lignes de données par lot ( bb). Utilisée lorsque -b n'est pas spécifié, cette option provoque l'envoi au serveur de la totalité du fichier de données au cours d'une transaction unique. Le serveur optimise le chargement en bloc en fonction de la valeur de bb. Par défaut, ROWS_PER_BATCH est inconnu.

  • KILOBYTES_PER_BATCH = cc

    Nombre approximatif de kilo-octets (Ko) de données par lot ( cc). Par défaut, KILOBYTES_PER_BATCH est inconnu.

  • TABLOCK

    Spécifie qu’un verrou au niveau de la table de mise à jour en bloc est acquis pendant l’opération de chargement en bloc ; sinon, un verrou au niveau des lignes est acquis. Cet indicateur améliore considérablement les performances, car la conservation d’un verrou pendant l’opération de copie en bloc réduit la contention de verrou sur la table. Une table peut être chargée simultanément à partir de plusieurs clients si la table n’a pas d’index et TABLOCK est spécifiée. Par défaut, le comportement de verrouillage est déterminé par l’option de la table table lock on bulkload. Pour plus d’informations, consultez sp_tableoption.

    Remarque

    Si la table cible est un index columnstore en cluster, TABLOCK l’indicateur n’est pas nécessaire pour le chargement par plusieurs clients simultanés, car chaque thread simultané reçoit un groupe de lignes distinct dans l’index et charge les données dans celui-ci. Pour plus d’informations, consultez les index Columnstore : vue d’ensemble.

  • CONTRAINTES_DE_VÉRIFICATION

    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. Sans l’indicateur CHECK_CONSTRAINTS, toutes les contraintes CHECK et FOREIGN KEY sont ignorées, et après l’opération, la contrainte sur la table est marquée comme non fiable.

    Remarque

    Les contraintes UNIQUE, PRIMARY KEY et NOT NULL sont toujours appliquées.

    À un moment donné, vous devez vérifier les contraintes sur toute la table. Si la table n’a pas été vide avant l’opération d’importation en bloc, le coût de revalidation de la contrainte peut dépasser le coût de l’application CHECK de contraintes aux données incrémentielles. Par conséquent, nous vous recommandons d'activer le contrôle de contrainte pendant une importation en bloc incrémentielle.

    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. Avec CHECK les contraintes désactivées, vous pouvez importer les données, puis utiliser des instructions Transact-SQL pour supprimer les données qui ne sont pas valides.

    bcp applique désormais une validation des données et des contrôles de données qui peuvent entraîner l’échec de scripts existants si ceux-ci sont exécutés sur des données non valides dans un fichier de données.

    Remarque

    Le commutateur -mmax_errors n’applique pas le contrôle de contrainte.

  • DÉCLENCHEURS_INCENDIE

    Lorsque vous spécifiez cette option avec l’argument in , tous les déclencheurs d’insertion définis sur la table de destination s’exécutent pendant l’opération de copie en bloc. Si FIRE_TRIGGERS n'est pas spécifié, aucun déclencheur d’insertion n’est exécuté. FIRE_TRIGGERS est ignoré pour les arguments out, queryout, et format.

-i fichier_d'entrée

S’applique à : Windows uniquement. Non pris en charge sur Linux et macOS.

Spécifie le nom d'un fichier réponse contenant les réponses aux questions d'invite de commandes pour chaque champ de données lorsqu'une copie en bloc est effectuée en mode interactif (-n, -c, -w ou -N non spécifié).

Si input_file commence par un trait d’union (-) ou une barre oblique (/), n’incluez pas d’espace entre -i et la valeur input_file.

-k

Pendant l’opération, les colonnes vides doivent conserver une valeur NULL et les colonnes insérées ne doivent pas prendre de valeur par défaut. Pour plus d’informations, consultez Conserver les valeurs NULL ou les valeurs par défaut lors de l’importation en bloc (SQL Server).

-K application_intent

Déclare le type de la charge de travail de l'application lors de la connexion à un serveur. La seule valeur possible est ReadOnly. Si -K n’est pas spécifié, l’utilitaire bcp ne prend pas en charge la connectivité à un réplica secondaire dans un groupe de disponibilité Always On. Pour plus d’informations, consultez Décharger une charge de travail en lecture seule vers un réplica secondaire d’un groupe de disponibilité Always On.

-l délai d'attente connexion

Spécifie un délai de connexion. L’option -l spécifie le nombre de secondes avant que la connexion au serveur SQL ne soit interrompue lorsque vous essayez de vous connecter à un serveur. Par défaut, le délai d'expiration de la connexion est de 15 secondes. Le délai de connexion doit être un nombre compris entre 0 et 65534. Si la valeur fournie n’est pas numérique ou n’est pas comprise dans cet intervalle, bcp génère un message d’erreur. Une valeur 0 spécifie un délai d’expiration infini.

-L dernière_ligne

Spécifie le numéro de la dernière ligne à exporter à partir d’une table ou à importer à partir d’un fichier de données. Ce paramètre nécessite une valeur supérieure à (>) 0 mais inférieure (<) ou égale au (=) numéro de la dernière ligne. En l'absence de ce paramètre, la valeur par défaut est la dernière ligne du fichier.

last_row peut être un entier positif avec une valeur maximale de 2^63-1.

-m nombre_maximal_d'erreurs

Spécifie le nombre maximal d’erreurs de syntaxe toléré avant l’annulation de l’opération bcp . Une erreur de syntaxe implique une erreur de conversion de données vers le type de données cible. Le total max_errors exclut les erreurs pouvant être détectées uniquement sur le serveur, telles que des violations de contrainte.

Une ligne ne pouvant pas être copiée par l’utilitaire bcp est ignorée et est comptabilisée comme une erreur. Si cette option est omise, sa valeur par défaut est 10.

Remarque

L’option -m ne s’applique pas non plus à la conversion des types de données money ou bigint .

-n

Effectue la copie en bloc en faisant appel aux types de données par défaut des données (ceux de la base de données). Cette option n'affiche aucune invite pour aucun champ, mais utilise les valeurs par défaut.

Pour plus d’informations, consultez Utiliser le format natif pour importer ou exporter des données (SQL Server).

-n

S’applique à : Windows uniquement. Non pris en charge sur Linux et macOS.

Copie en bloc en faisant appel aux types de données natifs (base de données) des données non caractères, ainsi qu'au type Unicode pour les données caractères. Cette option, qui remplace avantageusement -w, sert à transférer des données d'une instance de SQL Server vers une autre à l'aide d'un fichier de données. Elle n'affiche aucune invite pour aucun champ. Utilisez-la pour transférer des données comportant des caractères ANSI étendus et conserver tous les avantages des performances du mode natif.

Pour plus d’informations, consultez Utiliser le format natif Unicode pour importer ou exporter des données (SQL Server).

Si vous exportez, puis importez des données dans le même schéma de la table à l'aide de bcp avec -N, un avertissement de troncation peut s'afficher s'il existe une colonne de type caractère non-Unicode, d'une longueur fixe (par exemple, char(10)).

Vous pouvez ignorer cet avertissement. Une façon de résoudre cet avertissement consiste à utiliser -n au lieu de -N.

-o fichier_de_sortie

S’applique à : Windows uniquement. Non pris en charge sur Linux et macOS.

Spécifie le nom d’un fichier recevant la sortie redirigée à partir de l’invite de commandes.

Si output_file commence par un trait d’union (-) ou une barre oblique (/), n’incluez pas d’espace entre -o et la valeur output_file.

-P password

Spécifie le mot de passe de l’ID de connexion. Si cette option n’est pas utilisée, la commande bcp invite à entrer un mot de passe. Si cette option est utilisée à la fin de l’invite de commandes sans mot de passe, bcp utilise le mot de passe par défaut (NULL).

Important

N'utilisez pas de mot de passe vide. Utilisez un mot de passe fort.

Pour masquer votre mot de passe, ne spécifiez pas l'option -P avec l'option -U. Au lieu de cela, après avoir spécifié bcp avec l’option -U et d’autres commutateurs (ne spécifiez -Ppas), appuyez sur la touche Entrée , et la commande vous invite à entrer un mot de passe. Cette méthode garantit le masquage de votre mot de passe lors de son entrée.

Si password commence par un trait d’union (-) ou une barre oblique (/), n’ajoutez pas d’espace entre -P et la valeur password.

-q

Exécute l’instruction SET QUOTED_IDENTIFIER ON dans la connexion entre l’utilitaire bcp et une instance de SQL Server. Utilisez cette option pour spécifier un nom de base de données, de propriétaire, de table ou de vue contenant un espace ou un guillemet simple. Placez le nom de la table ou de la vue en trois parties entières entre guillemets ("").

Pour spécifier un nom de base de données comportant un espace ou un guillemet simple, vous devez utiliser l'option -q.

-q ne s'applique pas aux valeurs transmises à -d.

Pour plus d’informations, consultez la section Remarques de cet article.

-r row_term

Spécifie l’indicateur de fin de ligne. La valeur par défaut est \n (caractère newline). Utilisez ce paramètre pour remplacer l'indicateur de fin de ligne par défaut. Pour plus d’informations, consultez Spécifier les indicateurs de fin de champ et de ligne (SQL Server).

Si vous spécifiez l'indicateur de fin de ligne en notation hexadécimale dans une commande bcp, la valeur est tronquée à 0x00. Par exemple, si vous spécifiez 0x410041, la valeur 0x41 est utilisée.

Si row_term commence par un trait d’union (-) ou une barre oblique (/), n’incluez pas d’espace entre -r et la valeur row_term.

-R

Spécifie que les données de type devise, date et heure sont copiées en bloc dans SQL Server en utilisant le format régional défini par les paramètres régionaux de l'ordinateur client. Par défaut, les paramètres régionaux sont ignorés.

-S [server_name[\instance_name]]

Spécifie le nom de l’instance SQL Server à laquelle se connecter, ou s’il -D est utilisé, un DSN.

Si aucun serveur n’est spécifié, l’utilitaire bcp se connecte à l’instance par défaut de SQL Server sur l’ordinateur local. Cette option est requise lorsqu’une commande bcp est exécutée depuis un ordinateur distant sur le réseau ou sur une instance nommée locale. Pour se connecter à l’instance par défaut de SQL Server sur un serveur, spécifiez uniquement server_name. Pour vous connecter à une instance nommée de SQL Server, spécifiez server_name**\**instance_name.

-t field_term

Spécifie l’indicateur de fin de champ. La valeur par défaut est \t (caractère tabulation). Utilisez ce paramètre pour remplacer l'indicateur de fin de champ par défaut. Pour plus d’informations, consultez Spécifier les indicateurs de fin de champ et de ligne (SQL Server).

Si vous spécifiez l'indicateur de fin de champ en notation hexadécimale dans une commande bcp, la valeur est tronquée à 0x00. Par exemple, si vous spécifiez 0x410041, la valeur 0x41 est utilisée.

Si field_term commence par un trait d’union (-) ou une barre oblique (/), n’incluez pas d’espace entre -t et la valeur field_term.

-T

Spécifie que l'utilitaire bcp se connecte à SQL Server avec une connexion approuvée qui utilise la sécurité intégrée. Les informations d’identification de sécurité de l’utilisateur réseau, login_idet password , ne sont pas requises. Si -T n'est pas spécifié, vous devez indiquer -U et -P pour pouvoir vous connecter.

Important

Quand l’utilitaire bcp se connecte à SQL Server via une connexion approuvée utilisant la sécurité intégrée, utilisez l’option -T (connexion approuvée) à la place de la combinaison nom d’utilisateur et mot de passe. Quand l’utilitaire bcp se connecte à SQL Database ou à Azure Synapse Analytics, l’utilisation de l’authentification Windows ou de l’authentification Microsoft Entra n’est pas prise en charge. Utilisez les options -U et -P.

-U login_id

Spécifie l'ID de connexion utilisé pour une connexion à SQL Server.

-u

S’applique à :bcp version 18 et versions ultérieures.

Faire confiance au certificat de serveur. Lorsqu’elle est utilisée avec l’option Chiffrer pour la connexion, active le chiffrement à l’aide d’un certificat de serveur auto-signé.

-v

Indique le numéro de version et le copyright de l’utilitaire bcp .

-V { 80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 | 170 }

S’applique à : Windows uniquement. Non pris en charge sur Linux et macOS.

Copie en bloc en faisant appel aux types de données d'une version antérieure de SQL Server. Cette option ne pose aucune question pour aucun champ, mais utilise les valeurs par défaut.

  • 80 = SQL Server 2000 (8.x)
  • 90 = SQL Server 2005 (9.x)
  • 100 = SQL Server 2008 (10.0.x) et SQL Server 2008 R2 (10.50.x)
  • 110 = SQL Server 2012 (11.x)
  • 120 = SQL Server 2014 (12.x)
  • 130 = SQL Server 2016 (13.x)
  • 140 = SQL Server 2017 (14.x)
  • 150 = SQL Server 2019 (15.x)
  • 160 = SQL Server 2022 (16.x)
  • 170 = SQL Server 2025 (17.x) Aperçu

Par exemple, pour générer des données pour les types non pris en charge par SQL Server 2000 (8.x), mais introduits dans les versions ultérieures de SQL Server, utilisez l'option -V80.

Pour plus d’informations, consultez Importer des données au format natif et caractère à partir de versions antérieures de SQL Server.

-w

Copie en bloc en utilisant les caractères Unicode. Cette option ne demande pas une saisie pour chaque champ ; elle utilise nchar comme type de stockage, aucun préfixe, \t (caractère de tabulation) comme séparateur de champ et \n (caractère de nouvelle ligne) comme marque de fin de ligne. -w n’est pas compatible avec -c.

Pour plus d’informations, consultez Utiliser le format caractère Unicode pour importer ou exporter des données (SQL Server).

-X

S’applique à : Windows uniquement. Non pris en charge sur Linux et macOS.

Cette option est utilisée avec les options format et -fformat_file, et génère un fichier de format XML à la place du fichier de format non-XML par défaut. L'option -x ne fonctionne pas lors de l'importation ou de l'exportation de données. Elle génère une erreur si elle est utilisée sans format et -fformat_file.

-Y[s|m|o]

S’applique à :bcp version 18 et versions ultérieures.

Spécifie si les connexions utilisent le chiffrement TLS sur le réseau. -Y peut être o (pour optional), m (pour mandatory, par défaut) ou s (pour strict). Si vous n’incluez -Ypas , -Ym (pour mandatory) est la valeur par défaut.

Notes

  • Le client bcp 13.0 est installé quand vous installez les outils Microsoft SQL Server 2019 (15.x). Si des outils sont installés pour plusieurs versions de SQL Server, selon l’ordre des valeurs de la PATH variable d’environnement, vous pouvez utiliser le client bcp antérieur au lieu du client bcp 13.0. Cette variable d'environnement définit l'ensemble de répertoires utilisés par Windows pour rechercher des fichiers exécutables. Pour connaître la version que vous utilisez, exécutez la commande bcp -v à l'invite de commandes Windows. Pour plus d’informations sur la définition du chemin de commande dans la PATH variable d’environnement, consultez Variables d’environnement ou recherchez des variables d’environnement dans l’aide de Windows.

    Pour vous assurer que vous exécutez la version la plus récente de l’utilitaire bcp, vous devez supprimer toutes les anciennes versions de l’utilitaire bcp.

    Pour déterminer l’emplacement d’installation de toutes les versions de l’utilitaire bcp, tapez la commande suivante dans l’invite de commandes :

    where bcp.exe
    
  • L’utilitaire bcp peut également être téléchargé séparément depuis le Microsoft SQL Server 2016 Feature Pack. Sélectionnez ENU\x64\MsSqlCmdLnUtils.msi ou ENU\x86\MsSqlCmdLnUtils.msi.

  • Les fichiers de format XML ne sont pris en charge que si les outils SQL Server sont installés conjointement avec SQL Server Native Client.

  • Pour plus d’informations sur l’emplacement de recherche ou l’exécution de l’utilitaire bcp et sur les conventions de syntaxe des utilitaires d’invite de commandes, consultez les utilitaires de ligne de commande SQL (moteur de base de données).

  • Pour plus d’informations sur la préparation des données en vue d’une importation ou d’une exportation en bloc, consultez Préparer des données en vue d’une exportation ou d’une importation en bloc.

  • 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.

  • Utilisation de caractères spéciaux supplémentaires

    Les caractères <, >, |, & et ^ sont des caractères d’interpréteur de commandes spéciaux. Ils doivent être précédés du caractère d’échappement (^) ou placés entre guillemets quand ils sont utilisés dans une chaîne (par exemple, "StringContaining&Symbol"). Si vous placez une chaîne contenant un caractère spécial entre guillemets, les guillemets sont définis comme faisant partie de la valeur de la variable d’environnement.

Prise en charge de fichier de données natif

Dans SQL Server, l’utilitaire bcp prend en charge les fichiers de données natifs compatibles avec les versions de SQL Server à partir de SQL Server 2000 (8.x) et ultérieur.

Colonnes calculées et colonnes horodateur

Les valeurs dans le fichier de données importé pour des colonnes calculées ou timestamp sont ignorées, et SQL Server attribue automatiquement des valeurs. Si le fichier de données ne contient pas de valeurs pour les colonnes calculées ou timestamp de la table, utilisez un fichier de format pour spécifier que les colonnes calculées ou timestamp de la table ne doivent pas être prises en compte lors de l’importation des données ; auquel cas, SQL Server attribue automatiquement des valeurs à la colonne.

Les colonnes calculées et timestamp sont copiées en bloc de SQL Server vers un fichier de données comme d’ordinaire.

Spécifier des identificateurs contenant des espaces ou des guillemets

SQL Server peuvent inclure des caractères tels que des espaces et des guillemets incorporés. De tels identificateurs doivent être traités de la manière suivante :

  • Quand vous spécifiez, à l'invite de commandes, un identificateur ou un nom de fichier comportant un espace ou une apostrophe, mettez cet identificateur entre guillemets doubles (" ").

    Par exemple, la commande bcp out suivante crée un fichier de données nommé Currency Types.dat:

    bcp AdventureWorks2022.Sales.Currency out "Currency Types.dat" -T -c
    
  • Pour spécifier un nom de base de données comportant un espace ou un guillemet simple, vous devez utiliser l’option -q .

  • Pour les noms de propriétaires, de tables ou de vues incorporant des espaces ou des guillemets simples, vous pouvez :

    • Spécifier l'option -q, ou

    • Placer le nom de propriétaire, de table ou de vue entre crochets ([]), à l'intérieur des guillemets simples.

Validation des données

bcp applique désormais une validation des données et des contrôles de données qui peuvent entraîner l’échec de scripts existants si ceux-ci sont exécutés sur des données non valides dans un fichier de données. Par exemple, bcp vérifie maintenant que :

  • Les représentations en mode natif des types de données float ou real sont valides.

  • les données Unicode comportent un nombre d'octets pair.

Les types de données non valides qui pouvaient être importées dans les versions précédentes de SQL Server risquent de ne pas pouvoir être chargés désormais ; tandis que dans les versions précédentes, l'échec ne se produisait que lorsqu'un client tentait d'accéder aux données non valides. La validation supplémentaire réduit les risques d’incidents lors de l’interrogation des données après un chargement en bloc.

Exportation et importation en bloc de documents SQLXML

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.

Type de données Résultat
SQLCHAR ou SQLVARYCHAR Les données sont envoyées dans la page de codes du client ou dans la page de codes impliquée par le classement. L'effet est le même que si vous définissiez le commutateur -c sans spécifier de fichier de format.
SQLNCHAR ou SQLNVARCHAR Les données sont envoyées au format Unicode. L'effet est le même que si vous définissiez le commutateur -w sans spécifier de fichier de format.
SQLBINARY ou SQLVARYBIN Les données sont envoyées sans être converties.

Autorisations

Une bcp out opération nécessite une SELECT autorisation sur la table source.

Une bcp in opération nécessite au minimum SELECT/INSERT autorisations sur la table cible. En outre, ALTER TABLE l’autorisation est requise si l’une des conditions suivantes est remplie :

  • Les contraintes existent et l’indicateur CHECK_CONSTRAINTS n’est pas spécifié.

    La désactivation des contraintes est le comportement par défaut. Pour activer explicitement les contraintes, utilisez l’option -h avec l’indicateur CHECK_CONSTRAINTS .

  • Les déclencheurs existent et l’indicateur FIRE_TRIGGER n’est pas spécifié.

    Par défaut, les déclencheurs ne sont pas activés. Pour déclencher explicitement des déclencheurs, utilisez l’option -h avec l’indicateur FIRE_TRIGGERS .

  • Vous utilisez l'option -E pour importer des valeurs d'identité à partir d'un fichier de données.

Remarque

L’autorisation requise ALTER TABLE sur la table cible a été introduite dans SQL Server 2005 (9.x). Cette exigence peut entraîner l’échec des scripts bcp qui n’appliquent pas de déclencheurs et de vérifications de contrainte si le compte d’utilisateur ne dispose ALTER TABLE pas d’autorisations pour la table cible.

Meilleures pratiques relatives au mode caractère (-c) et au mode natif (-n)

Cette section contient des recommandations pour le mode caractère (-c) et le mode natif (-n).

  • (Administrateur/Utilisateur) Lorsque cela est possible, utilisez le format natif (-n) pour éviter le problème de séparateur. Utilisez le format natif pour exporter et importer à l'aide de SQL Server. Exportez les données à partir de SQL Server à l'aide de l'option -c ou -w si les données doivent être importées dans une base de données non-SQL Server .

  • (Administrateur) Vérifiez les données lors de l'utilisation de bcp out. Par exemple, lorsque vous utilisez bcp out, bcp in, puis bcp out, vérifiez que les données sont correctement exportées et que les valeurs de fin ne sont pas utilisées comme partie d'une valeur de données. Remplacez les terminateurs par défaut (en utilisant les options -t et -r) par des valeurs hexadécimales aléatoires afin d’éviter les conflits entre les valeurs de terminateurs et les valeurs de données.

  • (Utilisateur) Utilisez un terminateur long et unique (n'importe quelle séquence d'octets ou de caractères) pour minimiser les risques de conflits avec la valeur de chaîne actuelle. Cette tâche peut être réalisée à l'aide des options -t et -r.

Exemples

Les exemples de cette section utilisent l’exemple de base de données WideWorldImporters pour SQL Server 2016 (13.x) et versions ultérieures, Azure SQL Database et Azure SQL Managed Instance. WideWorldImporters peut être téléchargé depuis https://github.com/Microsoft/sql-server-samples/releases/tag/wide-world-importers-v1.0. Consultez instructions RESTORE pour que la syntaxe restaure la base de données.

Exemples de conditions de test

Sauf mention spécifique contraire, ces exemples partent du principe que vous utilisez l’authentification Windows et que vous disposez d’une connexion approuvée à l’instance du serveur sur laquelle vous exécutez la commande bcp. Un répertoire nommé D:\bcp est utilisé dans de nombreux exemples.

Le script Transact-SQL suivant crée une copie vide de la WideWorldImporters.Warehouse.StockItemTransactions table, puis ajoute une contrainte de clé primaire :

USE WideWorldImporters;
GO

SET NOCOUNT ON;

IF NOT EXISTS (SELECT *
               FROM sys.tables
               WHERE name = 'Warehouse.StockItemTransactions_bcp')
    BEGIN
        SELECT *
        INTO WideWorldImporters.Warehouse.StockItemTransactions_bcp
        FROM WideWorldImporters.Warehouse.StockItemTransactions
        WHERE 1 = 2;

        ALTER TABLE Warehouse.StockItemTransactions_bcp
        ADD CONSTRAINT PK_Warehouse_StockItemTransactions_bcp
            PRIMARY KEY NONCLUSTERED (StockItemTransactionID ASC);
    END

Vous pouvez tronquer la table StockItemTransactions_bcp autant que nécessaire :

TRUNCATE TABLE WideWorldImporters.Warehouse.StockItemTransactions_bcp;

R : Identifier la version de l’utilitaire bcp

À partir d'une invite de commandes, entrez la commande suivante :

bcp -v

B. Copier des lignes de table dans un fichier de données (avec une connexion approuvée)

Les exemples suivants illustrent l’utilisation de l’option out sur la table WideWorldImporters.Warehouse.StockItemTransactions.

  • De base

    Cet exemple crée un fichier de données nommé StockItemTransactions_character.bcp et y copie les données de table au format caractère .

    À partir d'une invite de commandes, entrez la commande suivante :

    bcp WideWorldImporters.Warehouse.StockItemTransactions out D:\bcp\StockItemTransactions_character.bcp -c -T
    
  • Développé

    Cet exemple crée un fichier de données nommé StockItemTransactions_native.bcp et y copie les données de table au format natif . L’exemple spécifie également le nombre maximum d’erreurs de syntaxe, un fichier d’erreurs et un fichier de sortie.

    À partir d'une invite de commandes, entrez la commande suivante :

    bcp WideWorldImporters.Warehouse.StockItemTransactions OUT D:\bcp\StockItemTransactions_native.bcp -m 1 -n -e D:\bcp\Error_out.log -o D:\bcp\Output_out.log -S -T
    

Passez en revue Error_out.log et Output_out.log. Error_out.log doit être laissé vide. Comparez les tailles de fichiers entre StockItemTransactions_character.bcp et StockItemTransactions_native.bcp.

Chapitre C. Copier des lignes de table dans un fichier de données (avec une authentification en mode mixte)

L'exemple suivant illustre l'option out sur la table WideWorldImporters.Warehouse.StockItemTransactions. Cet exemple crée un fichier de données nommé StockItemTransactions_character.bcp et y copie les données de table au format caractère .

L’exemple part du principe que vous utilisez l’authentification en mode mixte ; vous devez utiliser le commutateur -U pour spécifier votre ID de connexion. De même, à moins que vous vous connectiez à l’instance par défaut de SQL Server sur l’ordinateur local, utilisez le commutateur -S pour spécifier le nom du système et, éventuellement, un nom d’instance.

À partir d’une invite de commandes, entrez la commande suivante : Le système demande votre mot de passe.

bcp WideWorldImporters.Warehouse.StockItemTransactions out D:\bcp\StockItemTransactions_character.bcp -c -U<login_id> -S<server_name\instance_name>

D. Copier des données depuis un fichier dans une table

Les exemples suivants illustrent l’option in sur la table WideWorldImporters.Warehouse.StockItemTransactions_bcp, à l’aide de fichiers créés précédemment.

  • De base

    Cet exemple utilise le fichier de données StockItemTransactions_character.bcp créé précédemment.

    À partir d'une invite de commandes, entrez la commande suivante :

    bcp WideWorldImporters.Warehouse.StockItemTransactions_bcp IN D:\bcp\StockItemTransactions_character.bcp -c -T
    
  • Développé

    Cet exemple utilise le fichier de données StockItemTransactions_native.bcp créé précédemment. En outre, l’exemple utilise l’indicateur TABLOCK, spécifie la taille de lot, le nombre maximum d’erreurs de syntaxe, un fichier d’erreurs et un fichier de sortie.

    À partir d'une invite de commandes, entrez la commande suivante :

    bcp WideWorldImporters.Warehouse.StockItemTransactions_bcp IN D:\bcp\StockItemTransactions_native.bcp -b 5000 -h "TABLOCK" -m 1 -n -e D:\bcp\Error_in.log -o D:\bcp\Output_in.log -S -T
    

    Passez en revue Error_in.log et Output_in.log.

E. Copier une colonne spécifique dans un fichier de données

Pour copier une colonne spécifique, vous pouvez utiliser l'option queryout. L'exemple suivant copie uniquement la colonne StockItemTransactionID de la table Warehouse.StockItemTransactions dans un fichier de données.

À partir d'une invite de commandes, entrez la commande suivante :

bcp "SELECT StockItemTransactionID FROM WideWorldImporters.Warehouse.StockItemTransactions WITH (NOLOCK)" queryout D:\bcp\StockItemTransactionID_c.bcp -c -T

F. Copier une ligne spécifique dans un fichier de données

Pour copier une ligne spécifique, vous pouvez utiliser l'option queryout. L’exemple suivant copie uniquement la ligne de la personne nommée Amy Trefl de la table WideWorldImporters.Application.People dans un fichier de données Amy_Trefl_c.bcp.

Remarque

Le -d commutateur est utilisé pour identifier la base de données.

À partir d'une invite de commandes, entrez la commande suivante :

bcp "SELECT * from Application.People WHERE FullName = 'Amy Trefl'" queryout D:\bcp\Amy_Trefl_c.bcp -d WideWorldImporters -c -T

G. Copier des données d’une requête dans un fichier de données

Pour copier le jeu de résultats d’une instruction Transact-SQL dans un fichier de données, utilisez l’option queryout . L’exemple suivant copie les noms de la table WideWorldImporters.Application.People , triée en fonction du nom, dans le fichier de données People.txt .

Remarque

Le commutateur -t est utilisé pour créer un fichier délimité par des virgules.

À partir d'une invite de commandes, entrez la commande suivante :

bcp "SELECT FullName, PreferredName FROM WideWorldImporters.Application.People ORDER BY FullName" queryout D:\bcp\People.txt -t, -c -T

H. Créer der fichiers de format

L’exemple suivant crée trois fichiers de format distincts pour la table Warehouse.StockItemTransactions dans la base de données WideWorldImporters . Passez en revue le contenu de chaque fichier créé.

À partir d’une invite de commandes, entrez les commandes suivantes :

REM non-XML character format
bcp WideWorldImporters.Warehouse.StockItemTransactions format nul -f D:\bcp\StockItemTransactions_c.fmt -c -T

REM non-XML native format
bcp WideWorldImporters.Warehouse.StockItemTransactions format nul -f D:\bcp\StockItemTransactions_n.fmt -n -T

REM XML character format
bcp WideWorldImporters.Warehouse.StockItemTransactions format nul -f D:\bcp\StockItemTransactions_c.xml -x -c -T

Remarque

Pour utiliser le commutateur -x , vous devez utiliser un client bcp 9.0. Pour plus d’informations sur l’utilisation du client bcp 9.0, consultez la section Remarques .

Pour plus d’informations, consultez Utiliser des fichiers de format non XML (SQL Server) et des fichiers de format XML (SQL Server).

I. Utiliser un fichier de format pour une importation en bloc avec bcp

Pour utiliser un fichier de format précédemment créé lors de l’importation de données dans une instance de SQL Server, utilisez le commutateur -f avec l’option in . Par exemple, la commande suivante copie en bloc le contenu d’un fichier de données, StockItemTransactions_character.bcp, dans une copie de la table Warehouse.StockItemTransactions_bcp en utilisant le fichier de format précédemment créé, StockItemTransactions_c.xml.

Remarque

Le commutateur -L est utilisé pour importer uniquement les 100 premiers enregistrements.

À partir d'une invite de commandes, entrez la commande suivante :

bcp WideWorldImporters.Warehouse.StockItemTransactions_bcp in D:\bcp\StockItemTransactions_character.bcp -L 100 -f D:\bcp\StockItemTransactions_c.xml -T

Remarque

Les fichiers de format s'avèrent utiles lorsque les champs des fichiers de données diffèrent des colonnes de table ; par exemple, par leur nombre, leur ordre ou leurs types de données. Pour plus d’informations, consultez Fichiers de format pour importer ou exporter des données (SQL Server).

J. Spécifier une page de codes

L’exemple d’extrait de code suivant illustre l’importation bcp lors de la spécification d’une page de codes 65001 :

bcp MyTable in "D:\data.csv" -T -c -C 65001 -t , ...

K. Exemple de fichier de sortie utilisant des marques de fin de champ et de ligne personnalisées

Cet exemple montre deux exemples de fichiers, générés par bcp à l’aide de marques de fin de champ et de ligne personnalisées.

  1. Créez une table dbo.T1 dans la base de données tempdb avec deux colonnes, ID et Name.

    USE tempdb;
    GO
    
    CREATE TABLE dbo.T1 (ID INT, [Name] NVARCHAR (20));
    GO
    
    INSERT INTO dbo.T1 VALUES (1, N'Natalia');
    INSERT INTO dbo.T1 VALUES (2, N'Mark');
    INSERT INTO dbo.T1 VALUES (3, N'Randolph');
    GO
    
  2. Générez un fichier de sortie à partir de l’exemple de table dbo.T1, en utilisant une marque de fin de champ personnalisée.

    Dans cet exemple, le nom du serveur est MYSERVER, et -t , spécifie l’indicateur de fin de champ personnalisé.

    bcp dbo.T1 out T1.txt -T -S MYSERVER -d tempdb -w -t ,
    

    Voici le jeu de résultats.

    1,Natalia
    2,Mark
    3,Randolph
    
  3. Générez un fichier de sortie à partir de l’exemple de table dbo.T1, en utilisant des marques de fin de champ et de ligne personnalisées.

    Dans cet exemple, le nom du serveur est MYSERVER, -t , spécifie l’indicateur de fin de champ personnalisé et -r : spécifie l’indicateur de fin de ligne personnalisé.

    bcp dbo.T1 out T1.txt -T -S MYSERVER -d tempdb -w -t , -r :
    

    Voici le jeu de résultats.

    1,Natalia:2,Mark:3,Randolph:
    

    Remarque

    La marque de fin de ligne est toujours ajoutée, même au dernier enregistrement. Toutefois, la marque de fin de champ n’est pas ajoutée au dernier champ.

Exemples supplémentaires

Les articles suivants contiennent des exemples d’utilisation de bcp :

Obtenir de l’aide

Contribuer à la documentation SQL

Saviez-vous que vous pouvez modifier le contenu SQL vous-même ? Dans ce cas, non seulement vous nous aidez à améliorer notre documentation, mais vous êtes également cité en tant que contributeur à la page.

Pour plus d’informations, consultez Modifier la documentation Microsoft Learn.