À propos des opérations d'exportation et d'importation en bloc
Microsoft SQL Server 2005 prend en charge les données d'exportation en bloc depuis une table SQL Server et les données d'importation en bloc dans une table ou une vue non partitionnée SQL Server. Les méthodes de base disponibles sont les suivantes.
Méthode | Description | Importe les données | Exporte les données |
---|---|---|---|
Utilitaire de ligne de commande (Bcp.exe) qui exporte et importe en bloc des données et génère des fichiers de format. |
Oui |
Oui |
|
Instruction Transact-SQL qui importe des données directement d'un fichier de données dans une table de base de données ou une vue non partitionnée. |
Oui |
Non |
|
instruction INSERT ... SELECT * FROM OPENROWSET(BULK...) |
Instruction Transact-SQL qui utilise le fournisseur de l'ensemble de lignes en bloc OPENROWSET pour importer des données en bloc dans une table SQL Server en spécifiant la fonction OPENROWSET(BULK…) pour sélectionner des données dans une instruction INSERT. |
Oui |
Non |
Comparaison entre une opération intra-processus et une opération extra-processus
L'instruction BULK INSERT et la fonction OPENROWSET(BULK) s'exécutent en mode intra-processus avec SQL Server, partageant le même espace d'adresses mémoire. Les fichiers de données étant ouverts par un processus SQL Server, les données ne sont pas copiées entre le processus client et les processus SQL Server. Pour des considérations sur la sécurité lorsque vous importez des données à l'aide de l'instruction BULK INSERT ou INSERT ... SELECT * FROM OPENROWSET(BULK...), consultez Importation de données en bloc à l'aide de BULK INSERT ou OPENROWSET(BULK...).
À l'inverse, l'utilitaire bcp s'exécute en mode extra-processus. Pour déplacer des données à travers les espaces de mémoire de processus, bcp doit utiliser le marshaling de données inter-processus. Ce processus **vise à convertir les paramètres d'un appel de méthode en un flux d'octets. Cette opération peut ajouter une charge importante au processeur. Toutefois, étant donné que bcp analyse les données et les convertit au format de stockage natif au cours du processus client, ils peuvent décharger le processus SQL Server de l'analyse et de la conversion de données. Par conséquent, si vous avez une contrainte au niveau de l'UC, vous obtiendrez peut-être de meilleures performances d'importation en bloc sur un ordinateur équipé de plusieurs UC ou sur des ordinateurs différents, en utilisant bcp plutôt que les commandes BULK INSERT ou INSERT ... SELECT * FROM OPENROWSET(BULK).
Fichiers de format
L'utilitaire bcp, et les commandes BULK INSERT et INSERT ... SELECT * FROM OPENROWSET(BULK...) gèrent tous l'utilisation d'un fichier de format spécialisé qui stocke les informations de format de chaque champ dans un fichier de données. Un fichier de format peut également contenir des informations sur la table SQL Server correspondante. Le fichier de format peut être utilisé pour fournir toutes les informations de format nécessaires pour exporter en bloc des données à partir d'une instance de SQL Server et pour importer en bloc des données vers une instance du même type.
Les fichiers de format procurent une souplesse qui permet d'une part l'interprétation des données tel qu'elles existent dans le fichier de données au moment de l'importation, et d'autre part le formatage des données dans le fichier de données au moment de l'exportation. Cette souplesse vous dispense d'écrire un code spécial en vue d'interpréter ou de reformater les données en fonction des exigences spécifiques de SQL Server ou de l'application externe. Ainsi, si les données exportées en bloc doivent être chargées dans une application nécessitant des valeurs séparées par une virgule, vous pouvez utiliser un fichier de format pour insérer des virgules comme terminateurs de champ dans les données exportées.
SQL Server 2005 prend en charge deux types de fichiers de format : les fichiers de format XML et les fichiers de format non XML. Les fichiers de format non XML sont pris en charge par les versions antérieures de SQL Server ; les fichiers de format XML constituent une nouveauté de SQL Server 2005.
Le seul outil capable de générer un format de fichier est l'utilitaire bcp. Pour plus d'informations, consultez Création d'un fichier de format. Pour plus d'informations sur les fichiers de format, consultez Fichiers de format pour l'importation ou l'exportation de données
Remarque : |
---|
Si, à l'occasion d'une opération d'exportation ou d'importation en bloc, aucun fichier de format n'est fourni, l'utilisateur peut choisir de remplacer le formatage par défaut via la ligne de commande. |
Le processeur de requêtes et l'importation en bloc
Pour importer des données en bloc dans une instance de SQL Server, l'utilitaire bcp, les instructions BULK INSERT et INSERT ... SELECT * FROM OPENROWSET(BULK...) fonctionnent de pair avec le processeur de requêtes.
Les trois méthodes convertissent les données du fichier de données en ensembles de lignes OLE DB. Mais la méthode de conversion est variable, comme suit :
- L'utilitaire bcp lit le fichier de données puis envoie un flux TDS au composant API BCP de SQL Server qui convertit les données en ensembles de lignes OLE DB.
- L'instruction BULK INSERT et le fournisseur d'ensembles de lignes en bloc OPENROWSET convertissent des données de fichier directement en un ensemble de lignes OLE DB.
Les ensembles de lignes OLE DB sont insérés dans la table cible par le processeur de requêtes qui planifie et optimise chaque opération.
Considérations relatives aux performances
Ces considérations peuvent être importantes si vous importez des volumes de données importants. Dans certains cas, vous pouvez améliorer les performances en modifiant la façon dont une opération d'importation ou d'exportation en bloc traite un ou plusieurs des éléments suivants :
- Commutateurs en bloc
- Contrôle des contraintes (contraintes CHECK)
- Mode de journalisation des transactions en bloc. Cette section s'applique aux bases de données employant habituellement le mode de sauvegarde complète.
- Ordre des données exportées
- Importation de données en parallèle
- Verrouillage des tables
- Exécution des déclencheurs
Pour plus d'informations, consultez Optimisation de l'importation en bloc.
Remarque : |
---|
Il n'existe aucune technique d'optimisation particulière pour les opérations d'exportation en bloc. Ces opérations consistent seulement à sélectionner les données dans la table source au moyen d'une instruction SELECT. |
Voir aussi
Concepts
Consignes de base concernant l'importation de données en bloc
Formats de date pour l'importation ou l'exportation de données
Scénarios pour l'importation et l'exportation de données en bloc
Traitement d'une instruction SQL unique
Autres ressources
Performing Bulk Load of XML Data (SQLXML 4.0)
SQL Server Integration Services
Performing Bulk Copy Operations
Utilitaire bcp
BULK INSERT (Transact-SQL)
Fichiers de format pour l'importation ou l'exportation de données
OPENROWSET (Transact-SQL)