Préparer l'importation de données en bloc (SQL Server)

S’applique à :SQL Server

Vous pouvez exécuter la commande bcp , l’instruction BULK INSERT ou la fonction OPENROWSET(BULK) pour importer des données en bloc uniquement à partir d’un fichier de données.

Notes

Il est possible d'écrire une application personnalisée qui importe des données en bloc à partir d'objets autres qu'un fichier texte. Pour importer des données en bloc à partir de mémoires tampons, utilisez les extensions bcp de l’API ODBC SQL Server Native Client ou l’interface OLE DB IRowsetFastLoad. Pour importer des données en bloc à partir d’une table de données C#, utilisez l’API de copie en bloc ADO.NET, SqlBulkCopy.

Notes

L'importation de données en bloc dans une table distante n'est pas prise en charge.

Quand vous importez des données en bloc d’un fichier de données dans une instance de Microsoft SQL Server, suivez les recommandations suivantes :

  • Procurez-vous les autorisations nécessaires à votre compte d'utilisateur.

    Le compte d’utilisateur dans lequel vous utilisez bcp, l’instruction BULK INSERT ou l’instruction INSERT... SELECT * FROM OPENROWSET(BULK...) doit bénéficier des autorisations nécessaires sur la table (affectées par le propriétaire de la table). Pour plus d’informations sur les autorisations requises par chaque méthode, consultez Utilitaire bcp, OPENROWSET (Transact-SQL)et BULK INSERT (Transact-SQL).

  • Utilisez le mode de récupération utilisant les journaux de transactions.

    Cette instruction s'applique à une base de données employant le mode de sauvegarde complète. Le mode de récupération utilisant les journaux de transactions permet d’effectuer des opérations en bloc dans une table non indexée (un segment). La récupération utilisant les journaux de transactions permet d'éviter que le journal des transactions ne manque d'espace dans la mesure où les insertions de lignes ne sont pas consignées. Pour plus d’informations sur le mode de récupération utilisant les journaux de transactions, consultez Modes de récupération (SQL Server).

    Nous vous recommandons de modifier la base de données pour utiliser le mode de récupération utilisant les journaux de transactions juste avant l'opération d'importation en bloc. Rétablissez la base de données en mode de récupération complète immédiatement après. Pour plus d’informations, consultez Afficher ou modifier le mode de récupération d’une base de données (SQL Server).

    Notes

    Pour plus d’informations sur la manière de minimiser la journalisation au cours des opérations d’importation en bloc, consultez Conditions requises pour une journalisation minimale dans l’importation en bloc.

  • Sauvegardez après l'importation en bloc de données.

    Pour une base de données qui utilise le mode de récupération simple, il est recommandé de réaliser une sauvegarde complète ou différentielle après l'opération d'importation en bloc. Pour plus d’informations, consultez Créer une sauvegarde complète de base de données (SQL Server) ou Créer une sauvegarde de base de données différentielle (SQL Server).

    Pour le mode de récupération complète ou le mode de récupération utilisant les journaux de transactions, une sauvegarde de fichier journal suffit. Pour plus d’informations, consultez Sauvegardes du journal des transactions (SQL Server).

  • Supprimez les index de table pour améliorer les performances pour les importations en bloc importantes.

    Cette instruction concerne l'importation d'une grande quantité de données comparée à la quantité de données déjà présente dans la table. Dans ce cas, la suppression des index de la table avant d'effectuer l'opération d'importation en bloc peut augmenter les performances considérablement.

    Notes

    En revanche, si vous chargez une petite quantité de données comparée à la quantité de données figurant dans la table, la suppression des index est contre-productive. En effet, la durée de régénération des index peut se révéler supérieure au gain de temps réalisé durant l'opération d'importation en bloc.

  • Recherchez et supprimez les caractères masqués dans le fichier de données.

    De nombreux utilitaires et éditeurs de texte affichent les caractères masqués qui figurent généralement à la fin du fichier de données. Durant une opération d'importation en bloc, les caractères masqués d'un fichier de données ASCII peuvent causer des problèmes qui génèrent une erreur de type « une valeur NULL inattendue a été trouvée ». Il suffit en général de rechercher et de supprimer les caractères masqués pour éviter ce problème.

Voir aussi

Importer et exporter des données en bloc à l’aide de l’utilitaire bcp (SQL Server)
Importer des données en bloc à l’aide de BULK INSERT ou OPENROWSET(BULK...) (SQL Server)
Utilitaire bcp
BULK INSERT (Transact-SQL)
Formats de données pour l'importation en bloc ou l'exportation en bloc (SQL Server)
OPENROWSET (Transact-SQL)