2015-11-05 20 views
0

我從SQL Server 2008導出到.csv,以便人們可以在Excel中輕鬆使用它。我正在使用SSIS 2008.否則,我只會導出到Excel。它大約有50列,500K行,所以有25M記錄。問題是這些記錄中有大約40個在他們的數據中有,(記錄不是列)我添加了文本限定符以避免我的列出現混亂,但這會在我的輸出中增加50M "標記或大約30 MB(20%)文件。我知道我可以在SQL Server 2008中進行一些類型的替換,但是我覺得這會讓事情減慢很多。動態文本限定符

是否有任何方法可以將文本限定符僅添加到,的項目?

雖然考慮到它仍然需要檢查每條記錄,所以看起來我要麼放慢我的過程,要麼讓最終用戶使用185MB的Excel文件。

更多信息:數據源是一個存儲過程,大約需要四分鐘才能運行所有使用的列(SQL Server 2008)。目的地是平面文件,逗號分隔"文本限定符(SSIS 2008)。

+0

可能你考慮(真討厭!)用CHAR(130)','或CHAR(184)'¸'代替','。 – pnuts

+1

或者也許創建.csv製表符分隔? – pnuts

+0

如果記錄僅在某些列中,則可以在連接管理器的「高級」頁面中單獨關閉每列的文本限定符。可悲的是,我不認爲有一種方法可以只在需要它的記錄上指定限定符。也許正如pnuts所說,製表符分隔的格式就是要走的路。如果任何字段都有選項卡,則可以在路途中用空格替換它們。 (30MB是否真的對大事件有影響?一旦用戶將其導入Excel並將其保存爲Excel文件,我認爲它會變得更小,而現在30MB看起來並不是很多。 ..) –

回答

0

關閉此問題。我們無法確定一種動態添加文本限定符的方法,無需向SSIS包添加任何腳本步驟,也不需要檢查每個字段的,並封裝任何具有雙重"的字段。從邏輯上講,這是我除外的,但我不確定SSIS是否可能具有我不知道的功能。

我最終的解決方案是設置任何可能有逗號使用文本限定符的列。它將我的文件大小增加了5-10%,但這是可以接受的。