J'ai besoin de meilleures pratiques en T-SQL Exporter des données au format CSV (avec en-tête)
Ce dont j'ai besoin pour faire est d'exporter les données dans le fichier CSV à l'aide de T-SQL.
Et je suis très confus au sujet de il ya beaucoup de façons de le faire, je ne sais pas choisir, s'il vous plaît aidez-moi pour confirmer la bollowing:
Comme je sais qu'il y a environ 3 méthodes, et je veux que vous m'aider à confirmer:
À L'Aide De Microsoft.Jet.OLEDB.4.0, comme ceci:
INSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Text;Database=C:\Temp\;HDR=Yes;',
'SELECT * FROM test.csv')
(object_id, name)
SELECT object_id, name
FROM sys.tables;
mais ce besoin le fichier csv est là, et avec en-tête
à l'aide de l'utilitaire SQLCMD
ligne de commande.
à l'aide de BCP
Utiliser de l'union, d'obtenir des données et de l'en-tête de colonne.
Tout est de ma compréhension à propos de T-SQL exporter au format CSV, merci de m'aider à confirmer.
Est-il d'autre moyen de les exporter au format CSV?
Merci!
Nous montrer ce que le fichier CSV ressemble.
OriginalL'auteur Guoliang | 2012-09-24
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser un SYNDICAT afin de créer une ligne d'en-tête, comme ceci:
La meilleure pratique est subjective. Utilisez la méthode qui fonctionne pour vous. Si vous souhaitez le plus "officiel" de la solution, qui consisterait à utiliser un package SSIS et le programmer avec un travail SQL Server Agent.
Merci pour votre réponse, à l'aide de bcp et de l'union peut exporter au format csv avec en-tête. merci! En fait, on sort de DTS/SSIS...
OriginalL'auteur Jim
Exécuter la commande ci-dessous dans SQL Server:
OriginalL'auteur ravi
Voici le T-SQL façon:
Mais, il ya un couple de mises en garde:
Vous devez disposer de Microsoft.ACE.OLEDB.12.0 fournisseur. Le fournisseur Jet 4.0 fonctionnent aussi, mais c'est ancien, j'ai donc utilisé cette place.
L' .Fichier CSV devra existent déjà. Si vous utilisez des en-têtes (HDR=OUI), assurez-vous que la première ligne de la .CSV est un fichier délimité liste de tous les champs.
OriginalL'auteur Slogmeister Extraordinaire
Pour Ace.OLEDB.12.0 (le nouveau Jet redistribuable moteur), vous pouvez installer la version 32 bits ou 64 bits autonome du moteur, même si vous avez "l'autre "saveur" déjà installé, que ce soit sur son propre, à partir d'Access, etc:
utiliser le /passive option de ligne de commande:
(32 bits): AccessDatabaseEngine.exe /passif
(64 bits): AccessDatabaseEngine_64.exe /passif
Dans mon cas, j'ai 64 bits de SQL Express 2008 R2, et avait 32 bits d'Office 12 applications installées (ainsi, les 32 bits de l'ACE pilotes ont été installés). J'ai installé la version 64 bits AccessDatabaseEngine_64.exe et c'est un peu de travail pour moi maintenant...
Aussi, c'est en supposant que vous avez fait l'autre configuration de travail:
EXEC maître.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0',
N'AllowInProcess', 1
ALLER
EXEC maître.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0',
N'DynamicParameters', 1
ALLER
sp_configure "afficher les options avancées", 1;
ALLER
RECONFIGURER;
ALLER
sp_configure 'Requêtes Distribuées Ad Hoc', 1;
ALLER
RECONFIGURER;
ALLER
OriginalL'auteur user1390375
concernant les "meilleures pratiques", il n'y a pas de meilleure pratique.
il ya plusieurs options disponibles, et non pas limité à:
en T-SQL avec INSERT EN OPENROWSET(...) SELECT * from [Matable]...
de l'exécution de la PCA, que ce soit à partir d'une étape de travail ou en T-SQL avec xp_cmdshell
Packages SSIS
PowerShell (à partir d'une étape de travail, dans SQL Server 2008+) ou d'autres script externe/exécutable
OriginalL'auteur user1390375