2014-01-24 30 views
0

我想讓C#代碼從數據庫表中提取數據,然後將其寫入CSV文件。對於某些列,我希望將值用雙引號括起來。我想知道是否最好讓SQL服務器執行附加/預計或使C#代碼執行該操作?這會在任何情況下讓我的SQL服務器查詢變慢嗎?讓SQL服務器做字符串操作?

回答

2

「用雙引號括起來」是CSV的工件

的報價是數據的一部分,因此應該從SQL查詢返回。

在C#中處理CSV處理 - 包括根據需要添加引號。我建議使用現有的庫,當數據爲寫成爲CSV時,它將自動處理所需的報價和其他注意事項。

一些其他原因在SQL做到這一點:

  • 防止SQL從不必要的操作變得污染。

  • 保持查詢通用;它也可以同樣用於HTML或Excel輸出的數據源。

  • 客戶端(C#)可以基於該值適當地引用該字段。如果以前未加引號的字段需要爲CSV輸出引用,這會使代碼「面向未來」。

  • 天真地添加引號會導致包含引號的數據失敗。


如果無法使用適當的圖書館,不管是什麼愚蠢的限制,有各種single-file implementations蕩蕩,可以用來作爲基礎。因人而異。

+0

如果我不被允許使用任何圖書館會怎麼樣?順便說一句,我只想用雙引號括住一些而不是所有的字段。 –

0

SQL不擅長編程工作。它會在一定程度上降低速度。除非它是一個快速和骯髒的「一次性」功能,否則我只是將它用於數據訪問,這很擅長。如果我不需要,我甚至不會按「排序」子句。