2017-08-16 154 views
0

我有一個電子表格。它包含公司信息,例如姓名,地址,電話,電子郵件等。我想要做的只是將一個平面導入SQL到它可以創建的表中,以便我可以對其進行一些處理。我只是使用MS SQL導入嚮導。我沒有使用BCP。DTS導入失敗

它所有的方式獲取到結束,給了我這個錯誤:

Blockquote Operation stopped...

  • 初始化數據流任務(成功)

  • 初始化連接(成功)

  • 設置SQL命令(成功)

  • 設置源連接(成功)

  • 設置目標連接(成功)

  • 驗證(成功) 消息 警告0x80049304:數據流任務1:警告:無法打開全局共享內存與性能進行溝通DLL;數據流性能計數器不可用。要解決此問題,請以管理員身份或系統控制檯運行此程序包。 (SQL Server導入和導出嚮導)

  • 準備執行(成功)

  • 預執行(成功)

  • 執行(錯誤) 消息 錯誤0xc020901c:數據流任務1 :Source發生錯誤 - crm_company $ .Outputs [Excel Source Output] .Columns Source上的[Directions] - crm_company $ .Outputs [Excel Source Output]。返回的列狀態是:「文本被截斷或者一個或多個字符在目標代碼頁中沒有匹配。」 (SQL Server導入和導出嚮導)

錯誤0xc020902a:數據流任務1: 「源 - crm_company $ .Outputs [Excel源輸出] .Columns [服法]」 失敗,因爲發生了截斷,和「Source - crm_company $ .Outputs [Excel Source Output] .Columns [Directions]」指定截斷時失敗的截斷行處置。指定組件的指定對象上發生截斷錯誤。 (SQL Server導入和導出嚮導)

  • 複製到[DBO] [crm_company](停止) 消息 錯誤0xc0047038:數據流任務1:SSIS錯誤代碼DTS_E_PRIMEOUTPUTFAILED。 Source - crm_company $上的PrimeOutput方法返回了錯誤代碼0xC020902A。當管道引擎調用PrimeOutput()時,組件返回失敗代碼。失敗代碼的含義由組件定義,但錯誤是致命的,並且管道停止執行。在此之前可能會發布錯誤消息,提供有關失敗的更多信息。 (SQL Server導入和導出嚮導)

  • 後執行(成功) 消息 信息0x4004300b:數據流任務1: 「目的地 - crm_company寫道:」 469行。 (SQL Server導入和導出嚮導)所有的

Blockquote

首先,我已經告訴DTS忽略任何截斷錯誤。源字段是int或nvarchar。我編輯映射並將其強制爲int,而不是所需列的float。我已將默認列大小從255設置爲510.對於2列(方向和註釋),它已決定Directions爲nvarchar,Notes爲nvarchar(max)。我重寫Directions one,以便將其視爲nvarchar(max),我可以在它運行後創建的表中看到它。但是,當它運行時,每當出現上述錯誤時都會失敗。

我只是想這個數據到一個表。就這樣。如果我先手動指定一個表並導入,它仍然是錯誤的。 Directions中最長的文字長度爲978個字符,所以它幾乎不是很大。我不在乎它是否截斷,我只是不希望它在需要時停下來。有16000行導入,只有470行導入失敗。

我不知道哪一行失敗,在源文件中,因爲奇怪的是,DTS是不拉的數據,在它的順序,在電子表格中。去搞清楚。我嘗試重寫DTS愚蠢的嘗試,通過粘貼20行文本數據來決定列格式是什麼,但仍然失敗。

+0

是否有可能爲一列值的一個包含列分隔符?或行分隔符? –

+0

這不是CSV導入。這是一個xlsx文件,因此沒有任何分隔符。預覽很好,並顯示正確列中的所有內容。如果你告訴它忽略全局截斷和我導入包含一個長度超過1000個字符不再的數據列到一個nvarchar(最大)場,應該沒有問題,應該不會發生截斷。如果發現任何要截斷的內容,它應該忽略它,因爲這是我配置它的方式,但它忽略了我的設置。 – snert

回答

0

建議:

如果你有Visual Studio的BI然後制定一個SSIS包和:

1)嘗試添加一個分支失敗的行重定向這些。你可以通過添加一條來自excel源代碼的紅線來實現。運行包後,您可以對成功和失敗的行進行一些分析。

2)重要的是你用什麼類型的連接爲SQL Server。我有很多原生SQL客戶端的問題,所以我更喜歡使用ADO.NET或OLE DB連接類型。

隨着嚮導:

3)儘量使用類型轉換

4)將文件保存到TXT然後執行ETL。

+0

我有SQL Server Management Studio,我右鍵點擊數據庫,選擇任務 - >導入數據。這是一次性導入,所以我可以將數據導入登臺表中供以後處理。我沒有Visual Studio BI。通過導入嚮導創建的連接是目標上的Excel源連接和SQL Server Native Client連接。我不知道ETL是什麼。 – snert

+0

ETL代表提取,轉換和加載。應用程序之間的數據傳輸variouos環境稱爲ETL工具,甚至複製活動被稱爲「ETL數據」。SQL Server應該與Visual Studio for Business Intelligence一起提供(如果安裝材料可用,可以稍後添加),並且它是用於數據傳輸和處理的非常強大的工具。當數據導入出現問題時,我認爲使用SQL Server的導入/導出數據應用程序是一種很好的方法,可以保存包並將其用於調試/開發目的。希望這可以幫助。 –

0

我試了很多事情來解決這個問題,並發現它容易得多電子表格導入Access,然後導入訪問SQL。工作在5分鐘內完成。