SQLServer匯入excel
1、選擇要匯入的資料庫---任務---匯入資料,如圖:
2、選擇excel資料來源---瀏覽檔案。注意如果excel中首行資料為欄位,應勾選“首行包含列名稱”。
3、選擇資料庫---選擇源表和原檢視:
注意,如果不選則目標,則會在資料庫中自動生成同名的表,並把資料匯入進去。
不出錯誤到此以匯入完畢,但是實際上並非如此,錯誤示例:
操作已停止...
- 正在初始化資料流任務 (成功)
- 正在初始化連線 (成功)
- 正在設定 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) 出錯。返回的列狀態是:“該值違反了該列的完整性約束。”。
錯誤 0xc0209029: 資料流任務 1: SSIS 錯誤程式碼 DTS_E_INDUCEDTRANSFORMFAILUREONERROR。“輸入“Destination Input”(60)”失敗,錯誤程式碼為 0xC020907D,而且針對“輸入“Destination Input”(60)”的錯誤行處理設定指定一旦出錯就失敗。在指定元件的指定物件上出錯。可能在此之前已經發出錯誤訊息,提供了有關失敗的詳細資訊。
錯誤 0xc0047022: 資料流任務 1: SSIS 錯誤程式碼 DTS_E_PROCESSINPUTFAILED。處理輸入“Destination Input”(60)時,元件“目標 - t_Student”(47)的 ProcessInput 方法失敗,錯誤程式碼為 0xC0209029。標識的這個元件從 ProcessInput 方法返回了一個錯誤。雖然該錯誤是此元件特有的,但卻是致命的,將導致資料流任務停止執行。可能在此之前已經發出錯誤訊息,提供了有關失敗的詳細資訊。
- 執行之後 (成功)
資訊 0x402090df: 資料流任務 1: “元件“目標 - t_Student”(47)”中的資料插入操作的最終提交已開始。
資訊 0x402090e0: 資料流任務 1: “元件“目標 - t_Student”(47)”中的資料插入操作的最終提交已結束。
資訊 0x4004300b: 資料流任務 1: “元件“目標 - t_Student”(47)”已寫入 0 行。
就個人經驗而言,一般提示最有用能直觀展示非系統問題的是第二個錯誤提示,如上述:“錯誤 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即出錯。
其實你在下拉選項中選SQL Server Native Client 11.0,然後按步驟匯入就可以瞭如圖所示:
SQLServer匯入excel
1、選擇要匯入的資料庫---任務---匯入資料,如圖:
2、選擇excel資料來源---瀏覽檔案。注意如果excel中首行資料為欄位,應勾選“首行包含列名稱”。
3、選擇資料庫---選擇源表和原檢視:
注意,如果不選則目標,則會在資料庫中自動生成同名的表,並把資料匯入進去。
不出錯誤到此以匯入完畢,但是實際上並非如此,錯誤示例:
操作已停止...
- 正在初始化資料流任務 (成功)
- 正在初始化連線 (成功)
- 正在設定 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即出錯。