2012-01-16 85 views
0

我有一個帶有.sql文件的文件夾;每個查詢1個文件。我想執行所有查詢/ sql文件並將它們保存爲csv。如何使用SQL Server 2008腳本執行文件夾

有沒有辦法做到這一點,而不使用Windows CLI(在我的環境中禁用)。我有SQL Server Management Studio。

回答

2

創建一個VB.NET控制檯應用程序。

從相關文件夾中生成以.SQL結尾的文件列表。

加載每個文件到單獨的SQL內容命令

執行SQL命令每個,存儲在數據集的結果。

對於每個數據集的每個表,創建一個新的.csv文件

對於每個.csv文件,你將需要遍歷DataTable中的每一個細胞,並利用適當的轉義的.csv文件。

3

我會使用SSIS來處理此任務,只要您安裝了Business Intelligence Development Studio(BIDS)。

首先用SQL文件創建一個指向該文件夾的'Foreach Loop Container',然後使用一個變量來檢索每個文件名。

接下來,創建一個平面文件連接並將「連接字符串」屬性設置爲包含該文件位置的變量。

接下來,使用「執行SQL任務」組件將'SQLSourceType'設置爲'文件連接'並將'FileConnection'設置爲上一步中創建的'SQLConnection'。最後,根據數據的返回方式,如果結果集很小,只有一行或一列,那麼您可以將結果保存到變量中,並使用「數據流」任務創建一個「派生列」組件並將該變量的內容導出到CSV文件。或者,如果數據集較大,則可以將結果轉儲到臨時表,然後使用「OLE DB源」和「OLE DB目的地」,將完整的結果集直接推送到CSV中。

希望這不會太複雜的解決方案,這種方法的優點是可以從遠程機器或從服務器本身運行,並且可以使用SQL代理作業自動執行它。

+0

我不認爲這是一個非曲折的解決方案。好的回答 – 2012-01-16 17:18:59

+0

謝謝你的回答。我發現我們有一個非常舊的Business Objects副本,它解決了我的問題:我可以立即運行所有查詢並將它們保存爲多頁Excel文件。在這種情況下,再分離csv就更好了。 – Lennart 2012-01-16 20:18:01

0

對於腳本文件夾中的每個文件,將'for'與sqlcmd或bcp命令結合使用。

相關問題