Utilitaire bcp

Mis à jour : 12 décembre 2006

L'utilitaire bcp copie en bloc des données entre une instance de Microsoft SQL Server 2005 et un fichier de données dans un format spécifié par l'utilisateur. L'utilitaire bcp peut être utilisé pour importer un grand nombre de nouvelles lignes dans des tables SQL Server ou pour 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.

Icône Lien de rubrique Pour les conventions de syntaxe bcp, consultez Utilitaires d'invite de commandes.

Syntaxe

bcp {[[database_name.][owner].]{table_name | view_name} | "query"}
    {in | out | queryout | format} data_file
    [-mmax_errors] [-fformat_file] [-x] [-eerr_file]
    [-Ffirst_row] [-Llast_row] [-bbatch_size]
    [-n] [-c] [-N] [-w] [-V (60 | 65 | 70 | 80)] [-6] 
    [-q] [-C { ACP | OEM | RAW | code_page } ] [-tfield_term] 
    [-rrow_term] [-iinput_file] [-ooutput_file] [-apacket_size]
    [-Sserver_name[\instance_name]] [-Ulogin_id] [-Ppassword]
    [-T] [-v] [-R] [-k] [-E] [-h"hint [,...n]"]

Arguments

  • 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.
  • owner
    Nom du propriétaire de la table ou de la vue. owner est facultatif si l'utilisateur qui effectue l'opération est le propriétaire de la table ou de la vue. Si la valeur de ownern'est pas spécifiée et si l'utilisateur effectuant l'opération ne possède pas la table ou la vue spécifiée, SQL Server 2005 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 (Transact-SQL).
  • "query"
    Requête Transact-SQL qui retourne un ensemble de résultats. Si la requête retourne plusieurs jeux de résultats, par exemple une instruction SELECT spécifiant une clause COMPUTE, seul le premier ensemble de résultats est copié dans le fichier de données, les autres ensembles de résultats sont ignorés. Utilisez des guillemets doubles pour encadrer la requête et des guillemets simples pour encadrer tout ce qui est incorporé dans la requête. queryout doit également être spécifié lors d'une copie en bloc de données à partir d'une requête.
  • in | out | queryout | format
    Direction de la copie :

    • in copie à partir d'un fichier dans une table ou une vue de base de données.
      ms162802.note(fr-fr,SQL.90).gifRemarque :
      L'utilitaire bcp inclus dans SQL Server 6.5 ne prend pas en charge la copie en bloc dans des tables qui contiennent les types de données sql_variant ou bigint.
    • out copie dans un fichier à partir d'une table ou d'une vue de la base de données. Lors de l'extraction des données, notez que l'utilitaire bcp représente une chaîne vide comme une chaîne Null, et une chaîne Null comme une chaîne vide.
    • 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, -6 ou -N) et les délimiteurs de la table ou de la vue. Lors d'une copie en bloc de données, la commande bcp peut se référer à un fichier de format, qui permet d'éviter de 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éation d'un fichier de format.
  • 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 peut compter entre 1 et 255 caractères. Le fichier de données peut contenir jusqu'à 2147483647 lignes.

    ms162802.note(fr-fr,SQL.90).gifImportant :
    Pour l'option format, vous devez spécifier nul comme valeur de data_file (formatnul).
  • -mmax_errors
    Spécifie le nombre maximal d'erreurs de syntaxe tolérées 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.

    ms162802.note(fr-fr,SQL.90).gifRemarque :
    L'option -m ne s'applique pas non plus à la conversion des types de données money ou bigint.
  • -fformat_file
    Spécifie le chemin d'accès 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 format de fichier format_file spécifié 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éation d'un fichier de format.
    • Utilisé avec l'option in ou out, -f nécessite un fichier de format existant.
      ms162802.note(fr-fr,SQL.90).gifRemarque :
      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, -6 ou -N n'est pas spécifiée, 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).
  • -x
    Utilisée avec les options format et -fformat_file, génère un fichier de format XML à la place du fichier de format non-XML. 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.

    ms162802.note(fr-fr,SQL.90).gifRemarque :
    Pour utiliser le commutateur -x, vous devez employer un client bcp 9.0. Pour plus d'informations sur l'utilisation du client bcp 9.0, consultez la section « Remarques » plus loin dans cette rubrique.
  • -eerr_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 est omise, aucun fichier d'erreur n'est créé.
  • -Ffirst_row
    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.
  • -Llast_row
    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 (=) nombre total de lignes. En l'absence de ce paramètre, la valeur par défaut est la dernière ligne du fichier.
  • -bbatch_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 conjointement avec l'option **h"**ROWS_PER_BATCH =bb".

    Pour plus d'informations, consultez Gestion de lots pour l'importation en bloc.

  • -c
    Effectue l'opération en utilisant un type de données caractères. Cette option ne pose aucune question 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 et \r\n (nouvelle ligne) comme indicateur de fin de ligne.

    Pour plus d'informations, consultez Utilisation du format caractère pour importer ou exporter des données.

  • -N
    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 ne pose aucune question 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. L'option -N ne peut pas être utilisée avec SQL Server 6.5 ou les versions antérieures.

    Pour plus d'informations, consultez Utilisation du format natif Unicode pour importer ou exporter des données.

  • -w
    Copie en bloc en utilisant les caractères Unicode. Cette option ne pose aucune question pour aucun champ, mais utilise le type de données nchar comme type de stockage, n'ajoute pas de préfixe et emploie \t (tabulation) comme séparateur et \n (nouvelle ligne) comme indicateur de fin de ligne. Cette option ne peut pas être utilisée avec SQL Server 6.5 ou les versions antérieures.

    Pour plus d'informations, consultez Utilisation du format caractère Unicode pour importer ou exporter des données.

  • -V ( 60| 65| 70| 80)
    Copie en bloc en faisant appel aux types de donnée d'une version antérieure de SQL Server. Cette option ne pose aucune question pour aucun champ, mais utilise les valeurs par défaut. Par exemple, pour copier en bloc des formats de date pris en charge par l'utilitaire bcp fournis avec SQL Server 6.5 (mais n'étant plus pris en charge par ODBC) dans SQL Server 2005, utilisez le paramètre -V65.

    ms162802.note(fr-fr,SQL.90).gifImportant :
    Lorsque des données sont exportées en bloc de SQL Server dans un fichier de données, l'utilitaire bcp ne génère pas de formats de date SQL Server 6.0 ou SQL Server 6.5 pour toutes données datetime ou smalldatetime, même si -V est spécifié. Les valeurs de dates doivent toujours être écrites au format ODBC. En outre, les valeurs nulles dans les colonnes de bit sont écrites sous la forme 0, car SQL Server version 6.5 et antérieure ne prennent pas en charge les données bit pouvant être de valeur nulle.

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

  • -6
    Copie en bloc utilisant les types de données de SQL Server 6.0 ou SQL Server 6.5. Cette option est prise en charge uniquement pour assurer la compatibilité avec les versions antérieures. Pour SQL Server version 7 et ultérieure, utilisez plutôt l'option -V.
  • -q
    Exécute l'instruction SET QUOTED_IDENTIFIERS 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. Mettez entre doubles guillemets (" ") les trois parties du nom de la table ou de la vue.

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

    Pour plus d'informations, consultez la section Notes plus loin dans cette rubrique.

  • -C { ACP | OEM | RAW | code_page }
    Pris en charge pour la compatibilité avec les versions antérieures de SQL Server. Pour SQL Server version 7.0 ou ultérieure, Microsoft recommande de spécifier un nom de classement pour chaque colonne dans un fichier de format.

    Spécifie la page de codes des données dans le fichier de données. code_page s'applique uniquement si les données contiennent des colonnes char, varchar ou text avec des valeurs de caractère supérieures à 127 ou inférieures à 32.

    Valeur de la page de codes Description

    ACP

    ANSI/MicrosoftWindows (ISO 1252).

    OEM

    Page de codes par défaut du client. C'est la page de codes par défaut 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.

    code_page

    Numéro spécifique de la page de codes, par exemple 850.

    Pour plus d'informations, consultez Copie de données entre différents classements.

  • -iinput_file
    Spécifie le nom d'un fichier de 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, -6 ou -N non spécifié).
  • -ooutput_file
    Spécifie le nom d'un fichier recevant la sortie redirigée à partir de l'invite de commandes.
  • -apacket_size
    Nombre d'octets par paquet réseau envoyé 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 comprise entre 4096 et 65535 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.

  • -Sserver_name[ **\instance_name]
    Spécifie l'instance de SQL Server à laquelle établir une connexion. 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 seulement server_name. Pour une connexion à une instance nommée de SQL Server 2005, spécifiez server_name
    \**instance_name.
  • -Ulogin_id
    Spécifie l'ID de connexion utilisé pour une connexion à SQL Server.

    ms162802.security(fr-fr,SQL.90).gifRemarque relative à la sécurité :
    Lorsque 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 user name et password.
  • -Ppassword
    Spécifie le mot de passe associé à l'ID de connexion. Si cette option n'est pas utilisée, bcp demande un mot de passe. Si vous utilisez cette option à la fin de l'invite de commandes sans spécifier de mot de passe, bcp emploie le mot de passe par défaut, NULL.

    ms162802.security(fr-fr,SQL.90).gifRemarque relative à la sécurité :
    N'utilisez pas de mot de passe vide, mais un mot de passe fort.

    Pour masquer votre mot de passe, ne spécifiez pas l'option -P avec l'option -U. Plutôt, après la spécification de bcp avec l'option -U et d'autres commutateurs (ne spécifiez pas -P), appuyez sur Entrée, la commande vous demandera d'entrer un mot de passe. Cette méthode garantit le masquage de votre mot de passe lors de son entrée.

  • -T
    Spécifie que l'utilitaire bcp se connecte à SQL Server avec une connexion approuvée en utilisant la sécurité intégrée. Les informations d'identification de sécurité de l'utilisateur réseau, login_id et password ne sont pas requises. Si –T n'est pas spécifié, vous devez spécifier –U et –P pour vous connecter.
  • -v
    Indique le numéro de version et le copyright de l'utilitaire bcp.
  • -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.
  • -E
    Spécifie que la ou les valeurs d'identité dans le fichier de données importées doivent être utilisées pour la colonne d'identité. Si -E n'est pas spécifié, les valeurs d'identité pour cette colonne contenues dans le fichier de données importé ne sont pas prises en compte et SQL Server 2005 affecte automatiquement des valeurs uniques, basées sur une valeur de départ et sur un incrément spécifié durant la création de la table.

    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 spécifier que la colonne d'identité ne doit pas être prise en compte lors de l'importation des données ; auquel cas SQL Server 2005 attribue automatiquement des valeurs uniques à la colonne. Pour plus d'informations, consultez DBCC CHECKIDENT (Transact-SQL).

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

    Pour plus d'informations sur la conservation des valeurs d'identification, consultez Conservation des valeurs d'identité lors de l'importation de données en bloc.

  • **-h"**hint[ ,... n] "
    Option ou options à utiliser lors de la copie en bloc de données vers une table ou vue. Cette option ne peut pas être utilisée lors de la copie en bloc vers SQL Server version 6.x ou antérieure.

    • ORDER**(column[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, c'est-à-dire dans un ordre autre que celui d'une clé d'index cluster, ou s'il n'existe pas d'index cluster dans la table, l'option ORDER est ignorée. Les noms de colonne fournis doivent être des noms de colonne valides dans la table de destination. Par défaut, bcp considère que le fichier de données n'est pas ordonné. Pour l'optimisation de l'importation en bloc, SQL Server valide également le tri des données importées.

      Pour plus d'informations, consultez Contrôle de l'ordre de tri lors de l'importation de données en bloc.

    • ROWS_PER_BATCH **=**bb
      Nombre de lignes de données par lot (par exemple 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.

      Pour plus d'informations, consultez Gestion de lots pour l'importation en bloc.

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

      Pour plus d'informations, consultez Gestion de lots pour l'importation en bloc.

    • TABLOCK
      Spécifie qu'un verrou de niveau table d'une mise à jour en bloc est obtenu pour la durée de l'opération de chargement en bloc ; sinon, un verrou de niveau ligne est obtenu. Cette option augmente sensiblement les performances car le maintien d'un verrou pour la durée de la seule opération de copie réduit le taux de verrouillage de la table. Une table peut être chargée simultanément par plusieurs clients si elle ne comporte pas d'index et si TABLOCK est spécifié. Par défaut, le comportement du verrouillage est déterminé par l'option de table table lock on bulk load.

      Pour plus d'informations, consultez Contrôle du mécanisme de verrouillage pour l'importation en bloc.

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

      ms162802.note(fr-fr,SQL.90).gifRemarque :
      Les contraintes UNIQUE, PRIMARY KEY et NOT NULL sont toujours appliquées.

      À un point donné, vous devez vérifier les contraintes sur toute la 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. 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. Lorsque les contraintes CHECK sont désactivées, vous pouvez importer les données, puis utilisez des instructions Transact-SQL pour supprimer les données non valides.

      ms162802.note(fr-fr,SQL.90).gifRemarque :
      Dans SQL Server 2005, bcp applique une validation des nouvelles données et des contrôles de données qui pourraient entraîner l'échec de scripts existants lorsqu'ils sont exécutés sur des données non valides dans un fichier de données.
      ms162802.note(fr-fr,SQL.90).gifRemarque :
      Le commutateur -mmax_errors n'applique pas le contrôle de contrainte.

      Pour plus d'informations, consultez Contôle de la vérification des contraintes par les opérations d'importation en bloc.

    • FIRE_TRIGGERS
      Spécifié avec l'argument in, n'importe quel déclencheur d'insertion sur la table de destination s'exécute lors de la copie en bloc. Si FIRE_TRIGGERS n'est pas spécifié, aucun déclencheur d'insertion ne s'exécute. FIRE_TRIGGERS est ignoré pour les arguments out, queryout et format.

      Pour plus d'informations, consultez Contrôle de l'exécution des déclencheurs lors de l'importation de données en bloc.

Notes

Le client bcp 9.0 est installé lorsque vous installez les outils Microsoft SQL Server sur votre ordinateur. Si les outils SQL Server 2005 ainsi que les outils SQL Server 2000 sont installés, en fonction de la valeur de la variable d'environnement PATH, vous utiliserez peut-être le client bcp antérieur au lieu du client bcp 9.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 variable d'environnement PATH, consultez l'aide de Windows.

Les fichiers au format XML sont gérés uniquement lorsque les outils SQL Server sont installés avec SQL Native Client.

Pour savoir où trouver l'utilitaire bcp ou comment l'exécuter, et pour connaître les conventions syntaxiques des utilitaires d'invite de commandes, consultez Utilitaires d'invite de commandes.

Pour plus d'informations sur la préparation des données pour les opérations d'exportation et d'importation en bloc, consultez Préparation des données en vue d'une exportation ou d'une importation en bloc.

Pour obtenir des informations sur le moment où les opérations d'insertion de ligne effectuées par l'importation en bloc sont enregistrées dans le journal des transactions, consultez Conditions requises pour une journalisation minimale dans l'importation en bloc.

Colonnes calculées et colonnes timestamp

Les valeurs dans le fichier de données en cours d'importation pour des colonnes calculées ou timestamp sont ignorées, et SQL Server 2005 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 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 à partir de SQL Server vers un fichier de données comme d'ordinaire.

Spécification d'identificateurs contenant des espaces ou des guillemets

Les identificateurs de 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, sur la ligne de commande, 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 AdventureWorks.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étaire, de table ou de vue 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

Dans SQL Server 2005, bcp applique une validation des nouvelles données et des contrôles de données qui pourraient entraîner l'échec de scripts existants lorsqu'ils sont exécutés sur des données non valides dans un fichier de données. Par exemple, bcp vérifie maintenant que :

  • La représentation en mode natif des données de type float ou real est valide.
  • 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ées 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 d'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 Effet

SQLCHAR ou SQLVARYCHAR

Les données sont envoyées dans la page de codes client ou dans la page de codes inhérente au 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 opération bcp out nécessite l'autorisation SELECT sur la table source.

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

  • Les contraintes existent et l'indicateur CHECK_CONSTRAINTS n'est pas spécifié.
    ms162802.note(fr-fr,SQL.90).gifRemarque :
    La désactivation des contraintes est le comportement par défaut. Pour activer les contraintes explicitement, utilisez l'option -h avec l'indicateur CHECK_CONSTRAINTS.
  • Les déclencheurs existent et l'indicateur FIRE_TRIGGER n'est pas spécifié.
    ms162802.note(fr-fr,SQL.90).gifRemarque :
    Par défaut, les déclencheurs ne sont pas activés. Pour activer les déclencheurs explicitement, 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.
ms162802.note(fr-fr,SQL.90).gifRemarque :
L'autorisation ALTER TABLE obligatoire sur la table cible est nouvelle dans SQL Server 2005. Les scripts bcp qui n'appliquent pas de déclencheurs et de contrôles de contrainte risquent d'échouer si le compte d'utilisateur ne possède pas d'autorisation de table ALTER pour la table cible.

Exemples

Cette section contient les exemples suivants :

  • A. Copie de lignes de table dans un fichier de données (avec une connexion approuvée)
  • B. Copie de lignes de table dans un fichier de données (avec l'authentification en mode mixte)
  • C. Copie de données depuis un fichier dans une table
  • D. Copie d'une colonne spécifique dans un fichier de données
  • E. Copie d'une ligne spécifique dans un fichier de données
  • F. Copie de données d'une requête dans un fichier de données
  • G. Création d'un fichier de format non-XML
  • H. Création d'un fichier de format XML
  • I. Utilisation d'un fichier de format pour une importation en bloc avec bcp

A. Copie de lignes de table dans un fichier de données (avec une connexion approuvée)

L'exemple suivant illustre l'option out sur la table AdventureWorks.Sales.Currency. Cet exemple crée un fichier de données nommé Currency.dat et y copie les données de table au format caractère. Cet exemple part 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.

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

bcp AdventureWorks.Sales.Currency out Currency.dat -T -c

B. Copie de lignes de table dans un fichier de données (avec l'authentification en mode mixte)

L'exemple suivant illustre l'option out sur la table AdventureWorks.Sales.Currency. Cet exemple crée un fichier de données nommé Currency.dat 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. En outre, sauf si vous vous connectez à 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.

bcp AdventureWorks.Sales.Currency out Currency.dat -c -U<login_id> -S<server_name\instance_name>

Le système demande votre mot de passe.

C. Copie de données depuis un fichier dans une table

L'exemple suivant illustre l'option in en utilisant le fichier créé dans l'exemple précédent (Currency.dat). Cependant, cet exemple crée d'abord une copie vide de la table AdventureWorks Sales.Currency, Sales.Currency2, dans laquelle les données sont copiées. Cet exemple part 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.

Pour créer la table valide, dans l'éditeur de requête, entrez la commande suivante:

USE AdventureWorks;
GO
SELECT * INTO AdventureWorks.Sales.Currency2 
FROM AdventureWorks.Sales.Currency WHERE 1=2

Pour copier en bloc les données caractères dans la nouvelle table, c'est-à-dire pour importer les données, entrez la commande suivante à l'invite de commandes :

bcp AdventureWorks.Sales.Currency2 in Currency.dat -T -c

Pour vérifier que la commande a réussi, affichez le contenu de la table dans l'éditeur de requête et entrez :

USE AdventureWorks;
GO
SELECT * FROM Sales.Currency2

D. Copie d'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 Name de la table Sales.Currency dans un fichier de données. Cet exemple part 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.

À l'invite de commandes Windows, entrez :

bcp "SELECT Name FROM AdventureWorks.Sales.Currency" queryout Currency.Name.dat -T -c

E. Copie d'une ligne 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 ligne du contact nommé Jarrod Rana de la table AdventureWorks.Person.Contact dans un fichier de données (Jarrod Rana.dat). Dans cet exemple, nous supposons 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.

À l'invite de commandes Windows, entrez :

bcp "SELECT * FROM AdventureWorks.Person.Contact WHERE FirstName='Jarrod' AND LastName='Rana' "  queryout "Jarrod Rana.dat" -T -c

F. Copie de données d'une requête dans un fichier de données

Pour copier l'ensemble 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 AdventureWorks.Person.Contact, triés en fonction du nom, puis du prénom, dans le fichier de données Contacts.txt. Cet exemple part 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.

À l'invite de commandes Windows, entrez :

bcp "SELECT FirstName, LastName FROM AdventureWorks.Person.Contact ORDER BY LastName, Firstname" queryout Contacts.txt -c -T

G. Création d'un fichier de format non-XML

L'exemple suivant crée un fichier de format non-XML nommé Currency.fmt pour la table Sales.Currency dans la base de données AdventureWorks. Cet exemple part du principe que vous utilisez l'authentification Windows et que vous avez une connexion approuvée à l'instance du serveur sur laquelle vous exécutez la commande bcp.

À l'invite de commandes Windows, entrez :

bcp AdventureWorks.Sales.Currency format nul -T -c  -f Currency.fmt

Pour plus d'informations, consultez Description des fichiers de format non XML.

H. Création d'un fichier de format XML

L'exemple suivant crée un fichier de format XML nommé Currency.xml pour la table Sales.Currency dans la base de données AdventureWorks. Cet exemple part du principe que vous utilisez l'authentification Windows et que vous avez une connexion approuvée à l'instance du serveur sur laquelle vous exécutez la commande bcp.

À l'invite de commandes Windows, entrez :

bcp AdventureWorks.Sales.Currency format nul -T -c -x -f Currency.xml
ms162802.note(fr-fr,SQL.90).gifRemarque :
Pour utiliser le commutateur -x, vous devez utiliser un client bcp 9.0. Pour des informations sur l'utilisation du client bcp 9.0, consultez la section « Notes ».

Pour plus d'informations, consultez Description des fichiers de format XML.

I. Utilisation d'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, Currency.dat, dans une copie de la table Sales.Currency (Sales.Currency2) en utilisant le fichier de format précédemment créé (Currency.xml). Dans cet exemple, nous supposons 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.

À l'invite de commandes Windows, entrez :

bcp AdventureWorks.Sales.Currency2 in Currency.dat -T -f Currency.xml
ms162802.note(fr-fr,SQL.90).gifRemarque :
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 l'importation ou l'exportation de données.

Autres exemples

Les rubriques suivantes contiennent des exemples de l'utilisation de bcp :

Voir aussi

Autres ressources

Préparation des données en vue d'une exportation ou d'une importation en bloc
BULK INSERT (Transact-SQL)
OPENROWSET (Transact-SQL)
Importation de données en parallèle avec un verrouillage de niveau table
SET QUOTED_IDENTIFIER (Transact-SQL)
sp_configure (Transact-SQL)
sp_tableoption (Transact-SQL)
Formats de date pour l'importation ou l'exportation de données
Fichiers de format pour l'importation ou l'exportation de données
Optimisation de l'importation en bloc
À propos des opérations d'exportation et d'importation en bloc
Scénarios pour l'importation et l'exportation de données en bloc

Aide et Informations

Assistance sur SQL Server 2005

Historique des modifications

Version Historique

12 décembre 2006

Contenu modifié
  • La description de CHECK_CONSTRAINTS a été corrigée et indique que cette option vaut aux contraintes CHECK et FOREIGN KEY d'être ignorées.

17 juillet 2006

Nouveau contenu
  • Mise à jour de la description de l'argument ORDER.
  • Des liens « Autres exemples » ont été ajoutés vers des rubriques qui contiennent des exemples de bcp.

14 avril 2006

Contenu modifié :
  • Mise à jour de la remarque dans la description CHECK_CONSTRAINTS en supprimant FOREIGN KEY de la liste des contraintes qui sont toujours appliquées.
  • Mise à jour des conditions d'utilisation de l'autorisation ALTER TABLE.