2010-10-08 67 views
9

我試圖將數據從SQL Server導出爲CSV格式。我有一個蝙蝠任務來執行這個定期運行的任務。命令是:使用SQLCMD.EXE導出CSV數據

SQLCMD.EXE -d [db details] -i c:\export.sql -o c:\export.csv -s"," -W 

SQL文件只是一個來自視圖的SELECT *。

這個工作原理除了有些行在數據中有逗號,所以需要引用這些值。我可以將列分隔符更改爲「','」,但是之後我需要SQL Server才能在數據中轉義單引號。

不幸的是改變分離到另一個角色是不可能解決問題的情況下100%的領域之一包含其中包含各種各樣的神祕和奇妙的字符另一個應用程序序列化的數據。

有什麼方法可以讓我獲得標準的帶引號的CSV數據?

回答

9

您應該可以修改您的SELECT語句以使用QUOTENAME函數。當然,您必須單獨列出所有列,而不是使用SELECT *

注:這可能很難在屏幕上閱讀,但對於QUOTENAME的第二個參數是:

{單引號} {雙引號} {單引號}

SELECT QUOTENAME(Column1, '"'), QUOTENAME(Column2, '"') 
    FROM YourView 
+0

謝謝,這個作品完美。 – 2010-10-11 12:06:25

+0

如何使NULL輸出爲「」? – PerlDev 2010-11-15 15:20:25

+0

在一個批處理文件,工作就像這樣的魅力(具有延遲擴展啓用,並用雙引號逃脫「字符):選擇QUOTENAME(字段名,‘‘’’),...... – djangofan 2011-11-15 17:40:10