Préparer des données à une exportation ou une importation en bloc
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Cette section présente les points à prendre en considération lors de la planification d'opérations d'exportation en bloc et les contraintes liées aux opérations d'importation en bloc.
Remarque
Si vous n’êtes pas certain de savoir mettre en forme un fichier de données pour une importation en bloc, utilisez l’utilitaire bcp pour exporter des données de la table dans un fichier de données. La mise en forme de chaque champ de données dans ce fichier indique la mise en forme nécessaire pour importer des données en bloc dans la colonne de table correspondante. Utilisez la même mise en forme des données pour les champs de votre fichier de données.
Considérations sur le format du fichier de données pour l'exportation en bloc
Avant de réaliser une opération d’exportation en bloc à l’aide de la commande bcp , prenez en considération les points suivants :
Lorsque des données sont exportées vers un fichier, la commande bcp crée automatiquement le fichier de données en utilisant le nom de fichier spécifié. Si ce nom de fichier est déjà utilisé, les données en cours de copie en bloc dans le fichier de données remplacent le contenu existant de ce fichier.
L'exportation en bloc depuis une table ou une vue vers un fichier de données requiert l'existence d'une autorisation
SELECT
sur la table ou la vue qui fait l'objet d'une copie en bloc.SQL Server peut utiliser des analyses parallèles pour récupérer les données. Par conséquent, il est possible que les lignes de la table exportées en bloc depuis une instance de SQL Server n'apparaissent pas dans un ordre spécifique dans le fichier de données. Pour que les lignes de la table exportées en bloc apparaissent selon un ordre spécifique dans le fichier de données, utilisez l’option queryout pour effectuer une exportation en bloc depuis une requête et spécifiez une clause
ORDER BY
.
Contraintes liées au format du fichier de données pour l'importation en bloc
Pour que les données puissent être importées depuis un fichier de données, celui-ci doit satisfaire aux conditions de base suivantes :
- Les données doivent être organisées en lignes et en colonnes.
Remarque
La structure du fichier de données n'a pas besoin d'être identique à la structure de la table SQL Server, car les colonnes peuvent être ignorées ou réorganisées lors de l'importation en bloc.
Le format des données du fichier de données doit être un format pris en charge, par exemple le format caractère ou le format natif.
Le format des données peut être le format binaire natif ou caractère, notamment le format Unicode.
Pour que vous puissiez importer des données à l’aide d’une commande bcp, d’une instruction
BULK INSERT
, ou d’une instructionINSERT ... SELECT * FROM OPENROWSET(BULK...)
, la table de destination doit déjà exister.Chaque champ du fichier de données doit être compatible avec la colonne correspondante de la table cible. Par exemple, un champ int ne peut pas être chargé dans une colonne datetime. Pour plus d’informations, consultez Formats de données pour l’importation en bloc ou l’exportation en bloc (SQL Server) et spécifier des formats de données pour la compatibilité lors de l’utilisation de bcp (SQL Server).
Remarque
Pour spécifier un sous-ensemble de lignes d’un fichier de données à importer au lieu du fichier tout entier, vous pouvez utiliser une commande bcp avec le commutateur
-F <first_row>
et/ou le commutateur-L <last_row>
. Pour plus d’informations, consultez bcp Utility.Pour importer des données à partir de fichiers de données contenant des champs de longueur fixe ou de largeur fixe, utilisez un fichier de format. Pour plus d’informations, consultez Fichiers de format XML (SQL Server).
À compter de SQL Server 2017 (14.x), un fichier CSV peut être utilisé comme fichier de données pour une importation en bloc de données dans SQL Server. La marque de fin de champ d'un fichier CSV n'est pas nécessairement une virgule (
,
). Le fichier CSV doit respecter les restrictions suivantes :Les champs de données ne peuvent pas contenir la marque de fin de champ.
Si vous devez placer au moins un champ entre guillemets (
""
), vous devez le faire pour tous les champs de données.Pour effectuer une importation en bloc des données d'un fichier de table Microsoft FoxPro ou Visual FoxPro (
.dbf
) ou d'un fichier de feuille de calcul Microsoft Excel (.xls), vous devez convertir les données en un fichier CSV conforme aux limitations décrites précédemment. L'extension de fichier est en général.csv
. Vous pouvez alors utiliser ce fichier.csv
comme fichier de données dans une opération d'importation en bloc SQL Server.Sur les systèmes 32 bits (SQL Server 2014 (12.x) et versions antérieures), vous pouvez importer des données CSV dans une table SQL Server sans optimisation de l’importation en bloc en utilisant OPENROWSET avec le fournisseur OLE DB pour Jet. Jet traite les fichiers texte comme des tables, à l'aide du schéma défini par un fichier
schema.ini
situé dans le même répertoire que la source de données. Pour les données CSV, l’un des paramètres du fichierschema.ini
serait"FORMAT=CSVDelimited"
. Pour utiliser cette solution, vous devez comprendre le fonctionnement de Jet Text IISAM (syntaxe de sa chaîne de connexion, utilisation deschema.ini
, options de configuration du Registre, etc.). Les meilleures sources d'informations sont l'Aide de Microsoft Access et les articles de la Base de connaissances. Pour plus d'informations, consultez Initialisation du pilote de source de données de texte(en anglais), Comment utiliser une requête distribuée SQL Server 7.0 avec un serveur lié à des bases de données Access sécurisées(en anglais), Comment : utiliser Jet OLE DB Provider 4.0 pour se connecter à des bases de données ISAM(en anglais) et Comment ouvrir des fichiers texte délimité en utilisant Text IIsam du fournisseur Jet(en anglais).
En outre, l'importation en bloc de données depuis un fichier de données vers une table requiert le respect des points suivants :
Les utilisateurs doivent disposer des autorisations
INSERT
etSELECT
sur la table. Les utilisateurs ont également besoin de l'autorisationALTER TABLE
lorsqu'ils utilisent des options qui impliquent des opérations DDL (Data Definition Language), par exemple la désactivation de contraintes.Lorsque vous importez en bloc des données à l'aide de l'instruction
BULK INSERT
ouINSERT ... SELECT * FROM OPENROWSET(BULK...)
, le fichier de données doit être accessible pour les opérations de lecture par le profil de sécurité du processus SQL Server (si l'utilisateur se connecte à l'aide de la connexion fournie par SQL Server) ou par la connexion Microsoft Windows utilisée dans le cadre d'une délégation de sécurité. En outre, l'utilisateur doit disposer de l'autorisationADMINISTER BULK OPERATIONS
pour lire le fichier.
Remarque
L'importation en bloc dans une vue partitionnée n'est pas prise en charge et toute tentative en ce sens est vouée à l'échec.