2014-10-19 135 views
2

所以我有一段時間導入CSV文件。最終目標是創建一個可重複的過程來導入文件。我已經能夠導入文件的唯一方式是使用MS Access(導入到Access然後導出到SQL Server),並且愉快而愉快地進行操作。SQL Server導入導出嚮導(SQL Server Express)

但肯定SQL Server(Express或其他)應該能夠導入它也。

的文件是在野外這裏:http://ourairports.com/data/和具體爲:http://ourairports.com/data/airports.csv

這是一個巨大的數據集有(現實世界的數據)打,我有正常化它的設計,將其帶入SSRS什麼不是,很大程度上是爲了學習,並且有東西來「展示」未來的僱主。

但是,如果該文件將導入沒有錯誤,我會被詛咒。理想情況下,列將適當地導入和轉換,即數字列最終應在定義爲Int的表中或任何最合適的表中。

最常見的錯誤,我看到的是:

Data conversion failed. The data conversion for column "wikipedia_link" returned status value 4 and status text "Text was truncated or one or more characters had no match in the target code page." 

理想情況下,我想通過導入T-SQL和批量插入的文件,但也有類似的問題。

也許如果有人可以採取性行爲,看看有什麼事情,理想情況下,我會在這裏學習一些東西,而不是尋找一個快速的答案,除非我只是在做一些愚蠢的事情,如忘記複選框。

感謝

+0

爾加!沒有這個運氣。 – Steve 2014-10-19 16:25:27

回答

0

哇,我花了一段時間才能找出發生了什麼事情就在這裏!

基本上,它通過驗證步驟,因爲SQL查看映射並將表中列的數據類型與csv的前幾行進行比較。 (我相信前8排)

在這種情況下,前8行都是空白的!含義SQL沒有問題,因爲沒有要檢查的數據。

然後,你去導入和SQL命中與鏈接(第41行)的第一行,然後打破驗證。

不幸的是,你不能去改變列的數據類型,並期望它工作,因爲它不。 (謝謝微軟!)

這裏的一個解決方案是將一個(理想的所有)行與Wiki鏈接,到電子表格的頂部並重新導入。

編輯

AHHA!真正的解決方案!有一個註冊表項更改,用於設置excel驗證的行數。將其更改爲零使檢查器查看頂部16,000行。

您需要更改以下注冊表項爲零:

32 Bit Machine: 
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel\TypeGuessRows 

64 Bit Machine: 
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\Excel\TypeGuessRows 
+0

PS。未來的問題應該是代碼相關:) – KidCode 2014-10-20 15:56:40

+0

感謝您的關注。該文件確實在Excel中「按原樣」從網站下載。 MS Access似乎也很高興地將其導入併成功導出到SQL Server。 但是,SQL Server本身並不想按原樣導入它,並且在導入之前對csv進行排序只會更改發生不可恢復錯誤的行。 – Steve 2014-10-20 22:36:58

+0

我最終將只看代碼解決方案,以創建一個可重複的流程,部分使用批量導入(T-SQL)。 – Steve 2014-10-20 22:44:46