EXCEL導入到SQL Server經常出現“文本被截斷,或者一個或多個字符在目標代碼頁中沒有匹配項”錯誤的解決

環境:Windows Server 2008 R2英文版

數據庫:MS SQL Server 2008 R2英文版

EXCEL導入到SQL Server經常出現“文本被截斷,或者一個或多個字符在目標代碼頁中沒有匹配項”錯誤。

百度後的解決方案是:

EXCEL導入到SQL Server經常出現“文本被截斷,或者一個或多個字符在目標代碼頁中沒有匹配項”錯誤的解決

原因是,SQL Server的導入導出爲了確定數據表的字段類型,取excel文件的前8行來判別。如果前8條是少於255的字符串,則設成nvarchar(255)類型,但如果Excel後面的記錄中有長度超過255的,導入時就會出錯。即使在導入設置映射時調整了該字段的長度也不行。 
解決的辦法是改註冊表
如果是:Jet引擎.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel
如果是:ACE引擎.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Access Connectivity Engine\Engines\Excel
然後找到 TypeGuessRows這個項.默認爲8的.修改爲0.
把以下文本複製到TXT文件中,另存爲後綴爲REG文件
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel]
"TypeGuessRows"=dword:00000000
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Access Connectivity Engine\Engines\Excel]
"TypeGuessRows"=dword:00000000

本人由於沒有服務器的Local Administrator權限和數據庫的SA權限,無法驗證這個方案(猜想這個方案應該可行)。於是我做了一個這樣的解決方案:

1. 在Excel中的記錄的第一行的每個字段,內容是“ABCDEFGHIJABCDEFGHIJ...ABCDEFGHIJ”(共8000個字母)

2.給Excel添加一列id,也就是給每條記錄增加一個編號

3. 導入SQL,成功!

4.Delete from [Table] where ID=1

搞定!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章