2017-06-19 4 views
0

Je le code suivant, mais maintenant besoin d'avoir un nom de fichier unique (date à la fin) sur le fichier de données de ventesortie de nom de fichier unique à partir d'une requête SQL

USE [KevinMayhewLive] 
GO 
/****** Object: StoredProcedure [dbo].[toFileSalesData] Script Date: 06/19/2017 13:36:27 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

ALTER procedure [dbo].[toFileSalesData] 
as 

--xp_cmdshell will shell out to the command line to run bcp 
--the user account that runs this procedure should have file access to create and write files 
--bcp does not append to files, all data will be overwritten each time this procedure runs 

EXEC KevinMayhewLive..xp_cmdshell 'bcp "SELECT * FROM KevinMayhewLive.dbo.KM_CUSTOMER_DATA" queryout \\SERVER3\Docs\Emarsys_Sync\Customer_data\CUSTOMER_DATA.csv -c -t, -T -S' 

EXEC KevinMayhewLive..xp_cmdshell 'bcp "SELECT * FROM KevinMayhewLive.dbo.KM_SALES_DATA" queryout \\SERVER3\Docs\Emarsys_Sync\Sales_Data\sales_items.csv -c -t, -T -S' 
+1

Que voulez-vous dire par nom de fichier unique? votre requête a deux sorties de nom de fichier différentes de toute façon –

+0

Salut et bienvenue à SO. Ce n'est pas clair ce que vous voulez de cette question. Il semble que vous voulez avoir un nom unique pour le fichier SalesData chaque fois que cela s'exécute? Des pensées sur la structure de ce nom? Et quel est le point de cette déclaration select juste avant l'ALTER ??? –

+0

ah oublié de supprimer cela (certains mauvais conseils précédents) –

Répondre

0

Vous ne décrivez pas ce vous voulez dire par un nom de fichier "unique", mais si vous voulez inclure un horodatage dans le nom de fichier (ce qui dans la plupart des cas entraînerait l'unicité), vous devrez générer dynamiquement un nom de fichier. Par exemple:

EXEC xp_cmdshell 'bcp "SELECT * FROM KevinMayhewLive.dbo.KM_CUSTOMER_DATA" queryout \\SERVER3\Docs\Emarsys_Sync\Customer_data\CUSTOMER_DATA_'+REPLACE(CONVERT(NVARCHAR(40), GETDATE(), 120),':','')+'.csv -c -t, -T -S' 
+0

doit avoir la date à la fin, il est exécuté tous les jours afin qu'ils (nos gens d'email) veulent avoir des noms de fichiers quotidiens pour les données de vente afin qu'ils ne deviennent pas confus. –

+0

Je vous recommande d'inclure également l'heure afin que vous puissiez l'exécuter plusieurs fois par jour (peut-être pas * maintenant *, mais un jour, quelqu'un le demandera, et vous le testerez plusieurs fois par jour). Mon code inclut l'heure. – alroc

+0

Pourquoi nom de la base de données utilisateur avant xp_cmdshell? – Wendy