SQL Server導入數據之"對於所指定的緩衝區來講太大"

原文地址:

http://www.cnblogs.com/emanlee/archive/2009/07/28/1532878.html

最近處理excel數據導入到Sql Server中,失敗,報錯如下

作爲源列3(“產品說明”)的數據對於所指定的緩衝區來講太大
我 的excel文件中有一列叫“產品說明”,就是一些文字。Sql server處理導excel數據流程是這樣的,它會先創建目標表,再把excel數據寫入緩衝區,然後再把緩衝區數據寫入目標表。問題就在創建目標表和 寫入緩衝區,sql server會根據現在的excel中的數據格式來寫入緩衝區和創建目標表。比如excel中有一列爲編號,裏面是數字,sqlserver就會在目標表 裏建一列叫“編號”,爲float類型.

而對於我的excel文件中的"產品說明"這一列,是文字,那sql server如何建立目標列或緩衝區呢?它怎麼知道該把目標建立成varchar還是text呢?經過測試,發現sql server是這樣做的,他會取excel文件中的前8行(2的三次方),然後算這8行裏“產品說明”的最大長度,如果這8行裏最長的 > 255,則目標列和緩衝區就會建立成ntext類型,否則就建立成nvarchar類型。這樣,問題就來了!假設我的excel文件前8行“產品說明”中 都 < 255,則目標和緩衝區就被建立爲varchar(255)類型了(這裏說明一下,你可以修改目標表的字段類型,但緩衝區長度或類型是無法修改的)。而如 果我的第10行裏“產品說明”的長度超過了255,則sql server往緩衝區裏寫的時候,自然就發生瞭如上的錯誤:數據對於指定的緩衝區來講太大。

發佈了50 篇原創文章 · 獲贊 8 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章