2011-06-08 42 views
0

我使用SQL Server在本地存儲數據以進行統計分析。我從通常有數百列的csv文件創建我的表。手動規定列名和類型將很乏味,所以我在「導入嚮導」中使用「建議類型」來選擇正確的類型。使用最後一行在SQL Server 2008 R2導入嚮導中建議類型

這在大部分時間都可以使用,但是我的csv文件經常有一個「衣衫襤褸的上邊緣」(即很多列在第一千或上百行中都是空的 - 這些文件很多都是1+ gb,因此需要SQL Server來促進子集連接)。由於導入嚮導僅查看最多1000行,因此導入失敗。有沒有一個聰明的解決方法?

我能想到的解決方案是將最後一千行左右移動到文件頂部,位於標題行下方。但是由於這些文件中的一些文件是1+ gb,有數百萬行,我不能在文本編輯器中完成。有沒有一種方法可以勝過導入嚮導?還是往回讀?或者移動最後一千行左右的行嗎?

謝謝!

回答

0

看起來你不能在嚮導中設置,但如果你將它作爲完整的SSIS解決方案,你可以。 和/或1000行限制是SQL Server 2008(不知道R2)的錯誤

更多

我已經在一些點設置該樣本行我見this但不記得以及我使用的是什麼版本/ SP級別。

+0

@gbn - 我無法關注您的鏈接。我可以在免費的學術版本中使用SSIS嗎?謝謝! – 2011-06-08 19:36:07

+0

@richardh:抱歉,狡猾的複製/粘貼。修復。是的,我認爲你可以使用它 – gbn 2011-06-08 19:40:23

+0

@gbn - 謝謝!我發現了這個。我沒有一個名爲SSIS的程序,所以我可能僅限於文本處理解決方案。 – 2011-06-08 19:54:23

0

您可以指定標題行以跳過,直到獲得預期結果。

我會增加標題行跳過1000左右,然後減少它,以確保我沒有錯過任何東西,直到我可以得到一個體面的數據預覽。沒有在這麼大的文件上試過這個,但是看不出爲什麼它不適用於體面的機器。

如果你想要的東西不那麼單調,一個簡單的批處理文件或控制檯應用程序可以從這些文件中刪除空白。只要確保它使用正確的文本閱讀器方法來確保它讀取單行而不是嘗試將整個文件加載到內存中。

+0

我會試試看。我不確定我是否可以將此選項與使用標題選項結合使用。 – 2011-06-08 19:34:59

+0

建議不同的選項。批處理/控制檯應用程序方法就是在導入它們之前「清理」文件,就像你現在一樣。應該非常直截了當地刪除多餘的換行符,甚至是空行而不將整個文件加載到內存中。這不是完美的,但意味着1點擊清潔,然後像現在這樣做。 – Gats 2011-06-08 19:38:30

+0

我想保留不完整的條目。如果文件較小,在Vim中移動幾千條線就很容易。我想我需要一個命令行解決方案,即使它是刪除第一百萬個條目並稍後添加,但那不在我的控制檯之內。有沒有使這成爲可能的語言或命令? – 2011-06-08 19:42:49

相關問題