2013-10-03 98 views
0

導入.xls到SQL時出現問題。 Excel文件具有包含超過2000個文本字符的單元格的列,因此在導入時,我將nvarchar更改爲每列4000個。導入工作,但一列將單元格截斷爲255個字符。我檢查和列是nvarchar(4000,空),但選擇MAX(LEN(列))= 255,這很奇怪。我試圖將nvarchar更改爲varchar(4000),但這不被接受。該消息是:從.xls LongText導入數據到MS SQL

[Source Information] 
Table: `Sheet1$` 
Column: q1 
Column Type: VarChar 
SSIS Type: Unicode string [DT_WSTR] 

[Destination Information] 
Table: [dbo].[Sheet1$] 
Column: q1 
Column Type: varchar 
SSIS Type: string [DT_STR]

奇怪的是,一個列有光源類型:長文本和目標類型:nvarchar的,默認情況下顯示最多的字符和進口一切行之有效的那個特定的列(超過255個字符)。對於所有其他列nvarcharnvarchar可以工作,但即使更改爲4000或3000個字符,也可以在255處截斷。

我試圖重新保存Excel文件.csv格式,但隨後SQL顯示我執行(錯誤):

Task 1: Data conversion failed. The data conversion for column "Column 13" returned status value 4 and status text "Text was truncated or one or more characters had no match in the target code page 

Task 1: The "output column "Column 13" (62)" failed because truncation occurred, and the truncation row disposition on "output column "Column 13" (62)" specifies failure on truncation. A truncation error occurred on the specified object of the specified component. 

Task 1: An error occurred while processing file 

The component returned a failure code when the pipeline engine called PrimeOutput(). The meaning of the failure code is defined by the component, but the error is fatal and the pipeline stopped executing. There may be error messages posted before this with more information about the failure

我不能要求客戶重新導入數據,並將其保存爲。 csv格式。

是否有可能以SQL可接受的方式格式化Excel版本,如Source Type:LongText和Destination Type:nvarchar? (我不知道爲什麼varchar不適合我)

我已經使用Excel的簡單任務,如更改單元格到文本或複製粘貼一列到文本格式。

回答

0

請參考Fix

您需要用在連接字符串或註冊表設置指定掃描的行設置。

0

當導入嘗試確定Excel文件中的列類型時,它只會查找8個第一行。如果沒有長度超過255個字符的文本,則該列被標記爲VarChar,否則標記爲LongText(如果更合適,則爲數字類型)。

有兩種解決方法:

  1. 放長文本的前8行中你想成爲長文本列。

  2. 在決定列類型(TypeGuessRows)之前,更改應該探測多少行的註冊表設置。

要更改TypeGuessRows值,使用以下步驟:

在開始菜單上,單擊運行。
在運行對話框中,鍵入Regedt32,然後單擊確定。

打開註冊表編輯器中找到以下項:HKEY_LOCAL_MACHINE \ SOFTWARE \微軟\噴氣\ 4.0 \發動機\ Excel中
注意對於64位系統,相應的主要內容如下:HKLM \ SOFTWARE \ wow6432node \微軟\ jet \ 4.0 \ engines \ excel

雙擊TypeGuessRows。
在DWORD編輯器對話框中,單擊基本下的十進制。
爲值數據鍵入一個介於0和16之間的值(含)。
單擊確定,然後退出註冊表編輯器。

Source: Microsoft