SQLServer匯入匯出excel及常見問題

來源:互聯網
上載者:User

        前幾天考試系統匯入匯出學生資訊,初次接觸匯入匯出,為sqlserver和excel的資料傳遞方法之簡和MS產品的高效相容所震驚,但也遇到各種各樣問題,在此介紹SQLServer匯入匯出excel方法及遇到的問題。

SQLServer匯出Excel

        匯出步驟想對較少,出現的問題也較少。

1、進入Excel---資料---自其它來源---來自SQLServer。

2、串連資料庫:

3、選擇資料庫和表---完成:

4、選擇插入位置---確定---顯示匯出結果:

SQLServer匯入excel

1、選擇要匯入的資料庫---任務---匯入資料,

2、選擇excel資料來源---瀏覽檔案。注意如果excel中首行資料為欄位,應勾選“首行包含列名稱”。

3、選擇資料庫---選擇源表和原視圖:

        注意,如果不選則目標,則會在資料庫中自動產生同名的表,並把資料匯入進去。

4、如不需儲存SSIS包,直接點擊完成即可。

不出錯誤到此以匯入完畢,但是實際上並非如此,錯誤樣本:

操作已停止...- 正在初始化資料流程工作 (成功)- 正在初始化串連 (成功)- 正在設定 SQL 命令 (成功)- 正在設定源串連 (成功)- 正在設定目標串連 (成功)- 正在驗證 (成功)- 準備執行 (成功)- 執行之前 (成功)- 正在執行 (成功)- 正在複製到 [dbo].[t_Student] (錯誤)訊息錯誤 0xc0202009: 資料流程工作 1: SSIS 錯誤碼 DTS_E_OLEDBERROR。出現 OLE DB 錯誤。錯誤碼: 0x80004005。已獲得 OLE DB 記錄。源:“Microsoft SQL Server Native Client 10.0” Hresult: 0x80004005 說明:“未指定的錯誤”。 (SQL Server 匯入和匯出嚮導) 錯誤 0xc020901c: 資料流程工作 1: 輸入“Destination Input”(60) 上的 輸入列“studentId”(127) 出錯。返回的列狀態是:“該值違反了該列的完整性條件約束。”。 (SQL Server 匯入和匯出嚮導) 錯誤 0xc0209029: 資料流程工作 1: SSIS 錯誤碼 DTS_E_INDUCEDTRANSFORMFAILUREONERROR。“輸入“Destination Input”(60)”失敗,錯誤碼為 0xC020907D,而且針對“輸入“Destination Input”(60)”的錯誤行處理設定指定一旦出錯就失敗。在指定組件的指定對象上出錯。可能在此之前已經發出錯誤訊息,提供了有關失敗的詳細資料。 (SQL Server 匯入和匯出嚮導) 錯誤 0xc0047022: 資料流程工作 1: SSIS 錯誤碼 DTS_E_PROCESSINPUTFAILED。處理輸入“Destination Input”(60)時,組件“目標 - t_Student”(47)的 ProcessInput 方法失敗,錯誤碼為 0xC0209029。標識的這個組件從 ProcessInput 方法返回了一個錯誤。雖然該錯誤是此組件特有的,但卻是致命的,將導致資料流程工作停止運行。可能在此之前已經發出錯誤訊息,提供了有關失敗的詳細資料。 (SQL Server 匯入和匯出嚮導) - 執行之後 (成功)訊息資訊 0x402090df: 資料流程工作 1: “組件“目標 - t_Student”(47)”中的資料插入操作的最終提交已開始。 (SQL Server 匯入和匯出嚮導) 資訊 0x402090e0: 資料流程工作 1: “組件“目標 - t_Student”(47)”中的資料插入操作的最終提交已結束。 (SQL Server 匯入和匯出嚮導) 資訊 0x4004300b: 資料流程工作 1: “組件“目標 - t_Student”(47)”已寫入 0 行。 (SQL Server 匯入和匯出嚮導) 

就個人經驗而言,一般提示最有用能直觀展示非系統問題的是第二個錯誤提示,如上述:“錯誤 0xc020901c: 資料流程工作 1: 輸入“Destination Input”(60) 上的 輸入列“studentId”(127) 出錯。返回的列狀態是:“該值違反了該列的完整性條件約束。”

常見問題:

1、外鍵約束,例如:已獲得 OLE DB 記錄。源:“Microsoft SQL Server Native Client 10.0” Hresult: 0x80004005 說明:“INSERT 語句與 FOREIGN KEY 約束"FK_t_Student_t_Classes"衝突。該衝突發生於資料庫"CollegeSystemVBTest",表"dbo.t_Classes", column 'classId'。”一般外鍵約束禁止更新或插入會觸發此問題,解決方案,詳見我的部落格《簡簡單單說外鍵和級聯》。

2、列的完整性條件約束,例如:“錯誤 0xc020901c: 資料流程工作 1: 輸入“Destination Input”(60) 上的 輸入列“studentId”(127) 出錯。返回的列狀態是:“該值違反了該列的完整性條件約束。”一般主鍵約束會觸發此問題,例如匯入的excel中主鍵重複。想想當時因為是由2000多行學生資訊,轉專業的學生、來源資料錯誤都會產生重複行,當時想的辦法是先匯入Access,尋找重複列然後再刪除,雖能解決,但是效率太低,更好的解決方案,excel內建去除重複列功能,進入excel---資料---重複資料刪除項。

3、映射列多餘,SQLserver雖然可以智能識別映射列,但是成功率並非100%,所以可以在匯入excel第三步驟中編輯映射列或是選擇產生映射列。

4、資料長度,這個問題也十分常見,excel儲存格預設字元長度最大值為255,超過255即出錯。

文尾

        一般情況下,雖然有時候錯誤不是那麼好理解和找到,但是只要認真觀察,即可發現錯誤,否則即使小小的一個錯誤,也能耗上你半天。反思:仔細觀察每個提示、有針對性的解決、多角度嘗試、不要想著只要解決問題,同時要學習解決問題的這個過程。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.