2017-06-19 2 views
0

Ich habe den folgenden Code, aber jetzt muß einen eindeutigen Dateinamen (Datum am Ende) auf der Verkaufsdaten-Datei habeEindeutige Dateinamen Ausgang aus einer SQL-Abfrage

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

Was meinen Sie mit eindeutigen Dateinamen? Ihre Abfrage hat trotzdem zwei verschiedene Dateinamenausgaben –

+0

Hallo und willkommen bei SO. Es ist nicht klar, was Sie von dieser Frage wollen. Anscheinend möchten Sie bei jeder Ausführung einen eindeutigen Namen für die SalesData-Datei haben. Irgendwelche Gedanken über die Struktur dieses Namens? Und was ist der Sinn dieser Select-Anweisung kurz vor dem ALTER ??? –

+0

ah vergessen zu entfernen (einige vorherige schlechte Beratung) –

Antwort

0

Sie nicht beschreiben, was Sie meinen mit einem "eindeutigen" Dateinamen, aber wenn Sie einen Zeitstempel in den Dateinamen einfügen möchten (was in den meisten Fällen zur Eindeutigkeit führen würde), müssen Sie einen Dateinamen dynamisch generieren. Zum Beispiel:

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

muss das Datum am Ende haben, es wird täglich ausgeführt, so dass sie (unsere E-Mail-Leute) tägliche Dateinamen für die Verkaufsdaten haben wollen, damit sie nicht verwirrt werden. –

+0

Ich empfehle Ihnen, auch die Zeit einzubeziehen, damit Sie es mehrmals pro Tag ausführen können (wird * jetzt * vielleicht nicht benötigt, aber irgendwann wird jemand danach fragen. Außerdem werden Sie es mehrmals am Tag testen). Mein Code enthält die Uhrzeit. – alroc

+0

Warum Benutzer Datenbankname vor xp_cmdshell? – Wendy

Verwandte Themen