web-dev-qa-db-fra.com

Exportation d'une vue SQL sur un fichier CSV

Tandis que je peux simplement sur le script pour tirer des données via des requêtes, je trouve qu'il est très difficile de comprendre comment exporter les résultats d'une requête dans un fichier .csv et enregistrer dans un lieu de stockage de réseau (novice en ce qui concerne le plus côté technique!). J'ai essayé diverses choses comme la commande BCP ou à l'aide de l'assistant d'exportation ou de SQLCMD, mais je ne peux rien faire fonctionner! Je souhaite également pouvoir automatiser l'exportation I.E. Exécuter un emploi de l'agent pour créer/exécuter cette hebdomadaire. Un ex-collègue avait mis à ce sujet mais ne pouvait pas le faire fonctionner. Quand je cours ceci:

USE [DataInsight]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

BEGIN

sqlcmd -S londata01\raisers -d DataInsight -E -s, -W -w 65535 -Q "SET NOCOUNT on; select * from dbo.All_Email_Addresses" -s "," -o "C:\Users\scarsen\Documents\all_emails.csv"

END

par lequel londata01\raisers est le nom du serveur, la mise au point de données The DB et All_email adresse une table. Je reçois

Syntaxe incorrecte près de 'SQLCMD' lors de l'exécution.

J'ai allumé SQLCMDMode dans SSMS et obtenez toujours cette erreur.

Essayé ceci:

bcp "select * from datainsight.dbo.All_Email_Addresses" queryout 'C:\Users\scarsen.csv' –c –t , –S londata01\raisers –T

mais obtenez une syntaxe incorrecte près de "QuererOut".

Parce que je veux automatiser une sortie hebdomadaire, je peux utiliser un emploi d'agent afin de pouvoir créer l'exportation au sein de la SSMS (je pense)

J'ai aussi essayé quelque chose que je ne me souviens pas d'utiliser master..xp_cmdshell Mais un message est venu dire que je n'avais pas eu de paramètres de sécurité activés (ou similaires)

J'ai également essayé d'enregistrer une exportation via l'assistant vers une SSIS, mais d'obtenir un message indiquant que le stockage ou la modification des packages nécessite de l'exécution et de la DB à la même version.

En un mot, j'ai essayé beaucoup de choses avec mes connaissances limitées, mais je me demandais si quelqu'un pourrait aider?

1
Stl

bCP est une utilitaire de commande de ligne de commande - vous ne pouvez pas l'appeler comme une commande T-SQL. Cependant, si vous activez xp_cmdshell, vous pouvez l'exécuter via la ligne de commande à l'aide de ce code à l'intérieur d'une tâche SQL Server Agent (ou de la fenêtre de requête dans SQL Server Management Studio):

DECLARE @cmd varchar(1000);
SET @cmd = 'sqlcmd -S londata01\raisers -d DataInsight -E -s, -W -w 65535 -Q "SET NOCOUNT on; select * from dbo.All_Email_Addresses" -s "," -o "C:\Users\scarsen\Documents\all_emails.csv"';
EXEC sys.xp_cmdshell @cmd;

Dans l'exemple ci-dessus, nous exportons des données en C:\Users\scarsen\Documents dossier. Pour que cela fonctionne à partir d'Inside SQL Server, le compte de service SQL Server doit avoir accès à ce dossier.

Vous pouvez activer XP_CMDSHELL sur le serveur à l'aide de ces commandes T-SQL, que vous exécuteriez via une fenêtre de requête dans SQL Server Management Studio (SSMS):

EXEC sys.sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sys.sp_configure 'xp_cmdshell', 1;
RECONFIGURE;

Vous auriez seulement besoin de l'activer une fois par serveur SQL. Si vous souhaitez inverser le changement ci-dessus, courez simplement ceci:

EXEC sys.sp_configure 'xp_cmdshell', 0;
RECONFIGURE;

Il n'est vraiment pas nécessaire d'inverser le show advanced options Réglage de la configuration. Il n'a pas de roulement du tout sur autre chose que de vous laisser configurer des choses comme xp_cmdshell.

3
Max Vernon