環境: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
搞定!