程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> 更多數據庫知識 >> Excel導入數據庫時出現的文本截斷問題解決方案

Excel導入數據庫時出現的文本截斷問題解決方案

編輯:更多數據庫知識

問題
在把Excel導入到數據庫中時,發生文本截斷問題:即導入的數據每行只有一部分,原始的Excel數據為:
   
忽略錯誤
導入SQLServer2008過程中,如果源數據和目標數據類型不匹配會導入失敗,所以導入數據時會忽略錯誤,這次導入題庫也是,結果出現了這樣的問題:
 
仔細觀察你會發現,題目不完整,最長為25個漢字,很明顯這是varchar(50)數據類型,但是源數據和目的數據明明都為文本類型。
不忽略錯誤
如果不忽略錯誤,導入數據最後一步會產生這樣的問題:
復制代碼 代碼如下:
-正在執行(錯誤)
消息
錯誤0xc02020c5:數據流任務1:在將列“questionContent”(33)轉換為列“questionContent”(119)時數據轉換失敗。轉換操作返回狀態值4和狀態文本“文本被截斷,或者一個或多個字符在目標代碼頁中沒有匹配項。”。
(SQLServer導入和導出向導)
錯誤0xc020902a:數據流任務1:“輸出列“questionContent”(119)”由於發生截斷而失敗,而且針對“輸出列“questionContent”(119)”的截斷行處理設置指定截斷時出錯。在指定組件的指定對象上出現截斷錯誤。
(SQLServer導入和導出向導)
錯誤0xc0047022:數據流任務1:SSIS錯誤代碼DTS_E_PROCESSINPUTFAILED。處理輸入“數據轉換輸入”(92)時,組件“數據轉換0-0”(91)的ProcessInput方法失敗,錯誤代碼為0xC020902A。標識的這個組件從ProcessInput方法返回了一個錯誤。雖然該錯誤是此組件特有的,但卻是致命的,將導致數據流任務停止運行。可能在此之前已經發出錯誤消息,提供了有關失敗的詳細信息。
(SQLServer導入和導出向導)

解決方法
SQL語句
可以確定這個問題不是由數據類型不匹配引起,如何解決?既然通過界面方法不能完整導入,可以采用SQL語句的方式再試試:
復制代碼 代碼如下:
SELECT*INTO[MaKeSiExam].[dbo].[t_makesi_duoxuanti1]FROMOPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'DataSource=D:/考試系統/題庫/2012年下半年馬克思考試/馬克思_多選題.xls;
ExtendedProperties=Excel8.0')...[Sheet1$]

前提
使用SQL語句的方法可能會產生兩個錯誤:
復制代碼 代碼如下:
SQLServer阻止了對組件'AdHocDistributedQueries'的STATEMENT'OpenRowset/OpenDatasource'的訪問,因為此組件已作為此服務器安全配置的一部分而被關閉
消息7399,級別16,狀態1,第1行
鏈接服務器"(null)"的OLEDB訪問接口"Microsoft.Jet.OLEDB.4.0"報錯。提供程序未給出有關錯誤的任何信息。
消息7303,級別16,狀態1,第1行
無法初始化鏈接服務器"(null)"的OLEDB訪問接口"Microsoft.Jet.OLEDB.4.0"的數據源對象。

解決方法
復制代碼 代碼如下:
--啟用AdHocDistributedQueries
execsp_configure'showadvancedoptions',1
reconfigure
execsp_configure'AdHocDistributedQueries',1
reconfigure

第二個問題,是因為Excel文件和SQLServer沒在同一台機器,把Excel放到數據庫所在機器上執行上述SQL語句即可,注意以上導入數據庫的語句需要自建表,表字段數據類型為Excel中的數據類型。
導入完畢,可再關閉AdHocDistributedQueries
復制代碼 代碼如下:
--關閉AdHocDistributedQueries
execsp_configure'AdHocDistributedQueries',0
reconfigure
execsp_configure'showadvancedoptions',0
reconfigure

導入結果

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved