Importation de données en bloc à l'aide de BULK INSERT ou OPENROWSET(BULK...)
Mis à jour : 17 juillet 2006
Cette rubrique fournit une vue d'ensemble de l'utilisation de l'instruction BULK INSERT Transact-SQL et de l'instruction INSERT...SELECT * FROM OPENROWSET(BULK...) destinées à l'importation en bloc de données à partir d'un fichier de données dans une table Microsoft SQL Server. Cette rubrique décrit aussi des règles de sécurité relatives à l'utilisation de BULK INSERT et OPENROWSET(BULK…), et l'utilisation de ces méthodes pour l'importation en bloc à partir d'une source de données distante.
Remarque : |
---|
Lorsque vous utilisez BULK INSERT ou OPENROWSET(BULK…), il est important de comprendre la manière dont SQL Server 2005 gère l'emprunt d'identité. Pour plus d'informations, consultez « Considérations sur la sécurité» plus loin dans cette rubrique. |
Instruction BULK INSERT
BULK INSERT charge les données d'un fichier de données dans une table. Cette fonctionnalité est similaire à celle fournie par l'option in de la commande bcp, mais le fichier de données est lu par le processus SQL Server. Pour une description de la syntaxe BULK INSERT, consultez BULK INSERT (Transact-SQL).
Exemples
Pour des exemples BULK INSERT, consultez :
- BULK INSERT (Transact-SQL)
- Exemples d'importation et d'exportation en bloc de documents XML
- Copie de données entre différents classements
- Conservation des valeurs d'identité lors de l'importation de données en bloc
- Conservation des valeurs NULL ou utilisation des valeurs par défaut lors de l'importation en bloc
- Spécification des indicateurs de fin de champ et de fin de ligne
- Utilisation d'un fichier de format pour importer des données en bloc
- Utilisation du format caractère pour importer ou exporter des données
- Utilisation du format natif pour importer ou exporter des données
- Utilisation du format caractère Unicode pour importer ou exporter des données
- Utilisation du format natif Unicode pour importer ou exporter des données
- Utilisation d'un fichier de format pour ignorer une colonne de table
- Utilisation d'un fichier de format pour mapper les colonnes d'une table sur les champs d'un fichier de données
Fonction OPENROWSET(BULK…)
SQL Server 2005 introduit le fournisseur de l'ensemble de lignes en bloc OPENROWSET accessible en appelant la fonction OPENROWSET et en spécifiant l'option BULK. La fonction OPENROWSET(BULK…) vous permet d'accéder aux données distantes en vous connectant à une source de données distante (un fichier de données) par l'intermédiaire d'un fournisseur OLE DB.
Pour importer en bloc des données, appelez OPENROWSET(BULK…) à partir d'une clause SELECT…FROM dans une instruction INSERT. La syntaxe de base pour l'importation en bloc de données est la suivante :
INSERT ... SELECT * FROM OPENROWSET(BULK...)
Lorsqu'elle apparaît dans une instruction INSERT, OPENROWSET(BULK...) prend en charge les indicateurs de table. Outre les indicateurs de table usuels, tels que TABLOCK, la clause BULK accepte les indicateurs de table spécialisés suivants : IGNORE_CONSTRAINTS (ignore uniquement les contraintes CHECK), IGNORE_TRIGGERS, KEEPDEFAULTS et KEEPIDENTITY. Pour plus d'informations, consultez Indicateur de table (T-SQL).
Pour plus d'informations sur les autres utilisations de l'option BULK, consultez OPENROWSET (Transact-SQL).
Exemples
Pour des exemples d'instructions INSERT...SELECT * FROM OPENROWSET(BULK...), consultez les rubriques suivantes :
- Exemples d'importation et d'exportation en bloc de documents XML
- Conservation des valeurs d'identité lors de l'importation de données en bloc
- Conservation des valeurs NULL ou utilisation des valeurs par défaut lors de l'importation en bloc
- Utilisation d'un fichier de format pour importer des données en bloc
- Utilisation du format caractère pour importer ou exporter des données
- Utilisation d'un fichier de format pour ignorer une colonne de table
- Utilisation d'un fichier de format pour ignorer un champ de données
- Utilisation d'un fichier de format pour mapper les colonnes d'une table sur les champs d'un fichier de données
Considérations sur la sécurité
Si un utilisateur a recours à une connexion SQL Server, le profil de sécurité du compte du processus SQL Server est alors utilisé.
Par opposition, si un utilisateur SQL Server s'est connecté via l'authentification Windows, il peut lire uniquement les fichiers accessibles par le compte d'utilisateur, indépendamment du profil de sécurité du processus SQL Server.
Prenons l'exemple d'un utilisateur qui s'est connecté à une instance de SQL Server à l'aide de l'authentification Windows. Pour que cet utilisateur puisse utiliser BULK INSERT ou OPENROWSET en vue d'importer les données d'un fichier dans une table SQL Server, le compte d'utilisateur nécessite des droits d'accès en lecture au fichier de données. En bénéficiant de droits accès au fichier de données, l'utilisateur peut importer les données du fichier dans une table même si le processus SQL Server n'a pas l'autorisation d'accéder au fichier. L'utilisateur n'est pas obligé d'accorder au processus SQL Server une autorisation d'accès au fichier.
SQL Server et Microsoft Windows peuvent être configurés afin de permettre à une instance de SQL Server de se connecter à une autre instance de SQL Server en transmettant les informations d'un utilisateur Windows authentifié. Ce procédé est appelé emprunt d'identité ou délégation. Il importe de comprendre comment SQL Server 2005 gère les aspects de sécurité en matière d'emprunt d'identité lorsque vous utilisez l'instruction BULK INSERT ou OPENROWSET. L'emprunt d'identité permet au fichier de données de résider sur un ordinateur différent du processus SQL Server ou de l'utilisateur. Par exemple, si un utilisateur sur Ordinateur_A a accès à un fichier de données sur Ordinateur_B, et que la délégation des informations d'identification a été correctement définie, l'utilisateur peut se connecter à une instance de SQL Server s'exécutant sur Ordinateur_C, accéder au fichier de données sur Ordinateur_B, et importer les données en bloc de ce fichier dans une table résidant sur Ordinateur_C. Pour plus d'informations, consultez Vue d'ensemble de l'emprunt d'identité.
Remarque : |
---|
La façon dont SQL Server 2005 contrôle l'accès aux fichiers résout un problème de sécurité qui existait dans Microsoft SQL Server 2000 et les versions précédentes. Auparavant, une fois l'utilisateur authentifié, l'accès aux fichiers externes reposait sur le profil de sécurité du processus SQL Server. Lorsque le processus SQL Server disposait d'un droit d'accès en lecture à un fichier, il suffisait à un utilisateur n'ayant pas accès au fichier d'être membre du rôle de serveur fixe bulkadmin pour pouvoir importer le fichier à l'aide de la commande BULK INSERT et accéder au contenu du fichier. |
Importation en bloc à partir d'un fichier de données distant
Pour utiliser BULK INSERT ou INSERT...SELECT * FROM OPENROWSET(BULK...) pour effectuer l'importation en bloc de données à partir d'un autre ordinateur, le fichier de données doit être partagé entre les deux ordinateurs. Pour spécifier un fichier de données partagé, utilisez son nom UNC (Universal Naming Convention), dont le format général est **\\Servername\Sharename\Path\**Filename. Le compte d'utilisateur utilisé par SQL Server doit avoir reçu les autorisations requises pour lire le fichier sur le disque distant.
Par exemple, l'instruction BULK INSERT
ci-dessous importe en bloc des données dans la table SalesOrderDetail
de la base de données AdventureWorks
à partir d'un fichier de données nommé newdata.txt
. Ce fichier de données réside dans un dossier partagé nommé \dailyorders
, dans un répertoire partagé du réseau nommé salesforce
, sur un système nommé computer2
.
BULK INSERT AdventureWorks.Sales.SalesOrderDetail
FROM '\\computer2\salesforce\dailyorders\neworders.txt';
GO
Remarque : |
---|
Cette restriction ne s'applique pas à l'utilitaire bcp car le fichier est lu par le client, indépendamment de SQL Server. |
Voir aussi
Concepts
Importation et exportation de données en bloc
À propos des opérations d'exportation et d'importation en bloc
Consignes de base concernant l'importation de données en bloc
Autres ressources
INSERT (Transact-SQL)
Vue d'ensemble de l'emprunt d'identité
INSERT (Transact-SQL)
Clause SELECT (Transact-SQL)
OPENROWSET (Transact-SQL)
SELECT (Transact-SQL)
FROM (Transact-SQL)
Utilitaire bcp
BULK INSERT (Transact-SQL)
Aide et Informations
Assistance sur SQL Server 2005
Historique des modifications
Version | Historique |
---|---|
17 juillet 2006 |
|
5 décembre 2005 |
|