Préparer des données à une exportation ou une importation en bloc
S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics 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.
Notes
Si vous ne savez pas comment mettre en forme un fichier de données pour l’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 relatives au format de 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 d’une table ou d’une vue vers un fichier de données nécessite
SELECT
l’autorisation sur la table ou la vue qui est copiée en bloc.SQL Server pouvez utiliser des analyses parallèles pour récupérer des données. Par conséquent, les lignes de table exportées en bloc à partir d’un instance de SQL Server ne sont généralement pas garanties de se trouver dans un ordre spécifique dans le fichier de données. Pour que les lignes de table exportées en bloc s’affichent dans un ordre spécifique dans le fichier de données, utilisez l’option d’expiration de requête pour exporter en bloc à partir d’une requête et spécifiez une
ORDER BY
clause.
Exigences de format de 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.
Notes
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 pendant le processus d’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 importer des données à l’aide d’une commande,
BULK INSERT
d’une instruction ouINSERT ... SELECT * FROM OPENROWSET(BULK...)
d’une instruction bcp, 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 ou l’exportation en bloc (SQL Server) et Spécifier les formats de données de compatibilité lors de l’utilisation de bcp (SQL Server).
Notes
Pour spécifier un sous-ensemble de lignes à importer à partir d’un fichier de données plutôt que du fichier entier, vous pouvez utiliser une commande bcp avec le commutateur et/ou
-L <last_row>
le-F <first_row>
commutateur. 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 fin de champ d’un fichier CSV n’a pas besoin d’être une virgule. Pour être utilisable comme fichier de données pour une importation en bloc, un fichier CSV doit être conforme aux restrictions suivantes :
Les champs de données ne contiennent jamais la marque de fin de champ.
Aucune ou toutes les valeurs d’un champ de données sont placées entre guillemets (
""
).Pour importer en bloc des données à partir 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 fichier CSV conforme aux restrictions précédentes. L’extension de fichier est généralement
.csv
. Vous pouvez ensuite utiliser le.csv
fichier comme fichier de données dans une SQL Server opération d’importation en bloc.Sur les systèmes 32 bits (SQL Server 2014 (12.x) et versions précédentes), vous pouvez importer des données CSV dans une table SQL Server sans optimisations d’importation en bloc à l’aide d’OPENROWSET avec le fournisseur OLE DB pour Jet. Jet traite les fichiers texte comme des tables, avec le schéma défini par un
schema.ini
fichier qui se trouve dans le même répertoire que la source de données. Pour les données CSV, l’un des paramètres duschema.ini
fichier est"FORMAT=CSVDelimited"
. Pour utiliser cette solution, vous devez comprendre le fonctionnement de l’IISAM Jet Text (sa syntaxe chaîne de connexion,schema.ini
son utilisation, les options de paramètres de Registre, etc.) Les meilleures sources de ces informations sont l’aide Microsoft Access et les articles de la Base de connaissances (KB). Pour plus d’informations, consultez Initialisation du pilote de source de données texte, Comment utiliser une requête distribuée de SQL Server 7.0 avec un serveur lié aux bases de données Access sécurisés, Procédure : utiliser le fournisseur Jet OLE DB 4.0 pour se connecter aux bases de données ISAM, et Comment ouvrir des fichiers texte délimités à l’aide de Text IIsam du fournisseur Jet.
En outre, l’importation en bloc de données à partir d’un fichier de données dans une table présente les conditions suivantes :
Les utilisateurs doivent disposer des
INSERT
autorisations etSELECT
sur la table. Les utilisateurs ont également besoin d’uneALTER TABLE
autorisation lorsqu’ils utilisent des options qui nécessitent des opérations en langage de définition de données (DDL), telles que la désactivation de contraintes.Lorsque vous importez des données en bloc à l’aide
BULK INSERT
de 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 SQL Server connexion fournie) ou par la connexion Microsoft Windows utilisée sous sécurité déléguée. En outre, l’utilisateur doit avoirADMINISTER BULK OPERATIONS
l’autorisation de lire le fichier.
Notes
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.