2011-03-11 22 views
3

當使用SQL Server(2005,2008)「將結果另存爲...」選項時,我確實得到了一個CSV文件,但SQL Server沒有做我認爲正確的CSV創建。SQL Server創建存在問題的CSV文件

具體來說,如果我的數據包含逗號,那些字段不會用雙引號括起來。我現在正在查看的特定數據集不包含帶雙引號的字段,但如果確實如此,我不確定SQL Server是否也會正確執行這些操作。

每週我有一個遠程服務器上運行的數據庫上查詢

,產生約36K行,我得回有人在我的CSV格式的辦公室。到目前爲止,我一直在複製數據,然後粘貼到Excel(通過遠程桌面)。但是從遠程剪貼板粘貼36k行需要相當長的一段時間。在發生這種情況時,Excel會提供各種「等待OLE操作完成」的消息框。

我寧願運行查詢,將結果另存爲遠程服務器本身的CSV,然後複製文件。

長期我會寫一個程序來自動爲我做到這一點,但我已經有這個問題與SQL Server現在很多年了,但疼痛的程度還不夠高,我找到一個解決方案,直到現在。

+0

首先,發生了什麼事 「QUOTENAME」 的答案,有人給了?它工作得很好。其次,感謝大家的所有答案。但是,所有這些都是針對重複運行的相同查詢(這當然是我給出的示例)。似乎沒有解決方案來「修復」SQL Server Management Studio的處理。我把修復語句放在引號中,因爲我並不是說它是一個錯誤,只是說我個人不喜歡這種行爲。 – 2011-03-11 15:56:02

+0

'Quotename'答案被嵌套,因爲它僅適用於文本<= 128個字符。嘗試'選擇QUOTENAME(N''Twas brillig,和slithy toves在迴路中做了迴旋和靈活:所有的mimsy都是borogoves,而這個mome raths outgrabe。',''')' – 2011-03-11 16:04:14

+0

我用指令更新了我的答案當輸出到文本時指定分隔符 – 2011-03-11 16:07:08

回答

1

選擇菜單項工具>選項,出現選項對話框。在選項對話框中導航到查詢結果> SQL Server>'結果到文本'。選擇'輸出格式'項目'自定義分隔符'。在「自定義分隔符」字段中指定您的分隔符。點擊確定保存。

打開一個查詢窗口,選擇菜單項查詢>「結果要」,要麼「結果到文件」或「結果爲文本」。運行您的查詢,將使用您指定的分隔符輸出。

爲了您的自動化過程,雖然看一看從SQL Server的輸出數據在SQL Server BCP命令行實用程序。通過命令行開關,您可以完全控制分隔符和文本限定符。使用BCP是非常容易的,我建議使用它,即使您的長期過程的其他元素不存在

我有一個自動化進程調用BCP,它使用存儲過程來收集壓縮和FTPed每晚的客戶。我的進程在由SQL Server計算機上的計劃任務啓動的批處理文件中運行。

1

對不起,我現在不在Windows機箱 - 你是在談論SQL Management Studio中的查詢管理器應用程序嗎?

做你想做的是使用數據導入/導出工具,你使用SQL Server得到的最好的方法(很抱歉,現在不能檢查名稱)。

+0

好主意Neville,我會看看它,至少對於我必須經常做的事情來說 – 2011-03-11 15:57:15

1

這聽起來像一個SSMS錯誤,而不是一個SQL Server錯誤。我認爲喬的答案會解決你的問題。

如果你有集成服務提供給你,我懇求你看,你大概可以敲了一個包來做到這一點在任何時候都。

1

我一直在使用內部製作的VBS腳本將結果集導出爲CSV文件很長時間了。

這裏是一個鏈接:exec_script.zip

下面是一個簡單的用法:

c:>cscript //nologo exec_script.vbs /s:MyServer /d:MyDb /q:"exec MyStoredProc" /r:MyFile.csv /header 
+0

這需要我深入一點 - 但是感謝腳本文件。貫穿它,看看如何使用它來滿足我的需求。 – 2011-03-11 16:12:45