2012-06-12 41 views
1

全部在這篇文章中xp_cmdshell Query Length Too Large我設法獲得了一個問題,我遇到了使用xp_cmdshell的查詢大小限制。我寫這麼長的查詢的原因是嘗試解決另一個問題,bcp似乎將空字符串(來自包含具有空字符串的字段的表)轉換爲某種編碼字符('NUL'或'r'),或者其他的東西)。這影響了我可以使用我的導出數據。出口查詢我是BCP導出自動將空字符串轉換爲NUL

string strBcp = String.Format(
    "declare @sql varchar(8000) " + 
    "select @sql = 'bcp \"SELECT * FROM [{0}]..[ivwTmpDrgDataView];\" ' +" + 
    "'queryout \"{1}\\DRGData.txt\" -c -t -T -S ' + @@servername " + 
    "exec master..xp_cmdshell @sql;", 
    strDatabase, 
    strDataDir); 

這工作得很好,但在導出的文件數據庫值轉換

NULL -> Empty String (Which is fine!) 
Empty String -> Some strange character 

我能讀懂與C#中的.txt文件,然後重新編碼 - 是什麼將我的'奇怪的人物'轉換回它應該是的最佳方式,一個空字符串?

感謝您的時間。

回答

1

這是通過設計,如果bcp將空字符串和空字符串轉換爲相同的輸出(假設是空字符串),那麼以後就無法消除它們的歧義。

+0

那麼什麼是我的奇怪字符轉換爲空字符串的最佳方式。那是讓bcp寫一個空字符串作爲空字符串?通過在輸出查詢中使用'coalesce'或'IsNull'來創建 – MoonKnight

+1

? – paul