把Excel的資料匯入到資料庫

2022-08-02 14:27:11 字數 3491 閱讀 3568

將excel作為資料來源,將資料匯入資料庫,是ssis的乙個簡單的應用,下圖是示例excel,資料列是code和name

第一部分,excel中的資料型別是數值型別

1,使用ssdt建立乙個package,建立excel data source component,ssdt會在connection managers中建立乙個excel的connection

由於示例excel的首行是列名,所以需要勾選"first row has column names",excel connection manager 如下

2,資料來源元件將excel中的資料讀取出來,並傳遞給其他元件,資料來源元件其實是有輸入和輸出的,輸入是指將excel的資料匯入到資料來源元件中,輸出是指將資料來源元件中匯入的excel資料向下傳遞。

開啟資料來源元件的advanced editor,通過show advanced editor來開啟

在input and output properties選項卡中,external columns是excel資料來源元件的輸入列,output columns是excel資料來源元件的輸出列,每一列都是有datatype和codepage。

預設情況下,ssis的excel鏈結器將excel中的數字作為數值型別來對待

對於external columns,可以根據實際需要修改datatype和codepage,對於數值型別,不需要關注codepage,但是對於字元型別,codepage就必須匹配,否則package在run時就會fail。

由於示例excel的兩列的值都是數字,ssis預設設定datatype為數值型別,對於datatype,雖然可以修改,但是資料來源元件並不負責datatype的轉換,如果external columns 和output columns的datatype不相同,run的時候會丟擲error。如果需要convert datatype,需要使用data conversion 元件。

3,在db中建立接收excel資料的表tbexcel,資料類似是nvarchar,接收的資料是數值型,這樣並不會報錯。

create table dbo.tbexcel

(code nvarchar(10),

name nvarchar(10)

)

4,建立乙個oledb資料目標元件,開啟advanced editor,看到ole db destination input 也有兩個:

external columns:是db中的目標表的資料列及其屬性資訊,本例是指 tbexcel 表的列和屬性

input columns:是上游資料來源元件傳遞的資料列及其屬性資訊

第二部分,將excel中的資料型別修改為文字型別

6,如果excel source 中的資料是文字型別,實現起來必須考慮codepage。

修改示例excel,將name列修改為文字型別

7,將db中的目標表做修改,將資料列修改為varchar

if object_id('dbo.tbexcel') is not null

drop table dbo.tbexcel

create table dbo.tbexcel

(code varchar(10),

name varchar(10)

)

8,在execute package的過程中,ssis丟擲錯誤資訊,也就是說excel中的文字使用的資料型別是unicode 的,而varchar並不是unicode,所以必須進行轉換,在package中加入data converion元件進行轉換

9,execute package,仍然出錯,錯誤原因是code page 不匹配,在資料傳遞的過程中,不能將code page為1252的資料傳遞到codepage為936的目標表中

error at data flow task [ole db destination [203]]: the column "copy of name" cannot be processed because more than one code page (1252 and 936) are specified for it.

下圖是ole db destination input,在external columns中檢視name的屬性,codepage是936,input columns中檢視name的屬性,codepage是1252

由於列 copy of name是從data conversion中轉換而來的,所以只需要修改一下轉換後的資料列的codepage就可以了。

第三部分,一點小總結

NPOI把Excel匯入到資料庫

一,如何把excel中的資料匯入到資料庫?1 可以使用多種方式,但是較好的一種是使用npoi。2 npoi的缺陷 只能在office2003中使用,office2007無法使用npoi,同時對於wps也不能使用。3 使用是要引入npoi的dll外部檔案,下面的 使用了簡單三層的思想。二,把excel...

NPOI把Excel匯入到資料庫

二,把excel中的資料匯入到資料庫的具體步驟 protected void button1 click object sender,eventargs e else userinfo.email row.getcell 2 stringcellvalue 號碼同樣如此 if row.getcell...

Excel資料匯入到資料庫

使用表單檔案域 input type file 時,要讓form能夠傳遞檔案的話,必須要在form標籤中加入enctype multipart form data 後台 var contents oldrow 內容 tostring trim if contents.length 0 else if...