首页
/
每日頭條
/
科技
/
怎麼将excel表導入到數據庫
怎麼将excel表導入到數據庫
更新时间:2025-12-21 08:16:51

将Excel作為數據源,将數據導入數據庫,是SSIS的一個簡單的應用,下圖是示例Excel,數據列是code和name

怎麼将excel表導入到數據庫(把Excel的數據導入到數據庫)1

第一部分,Excel中的數據類型是數值類型

1,使用SSDT創建一個package,創建Excel data source component,SSDT會在Connection Managers中創建一個Excel的connection

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

怎麼将excel表導入到數據庫(把Excel的數據導入到數據庫)2

怎麼将excel表導入到數據庫(把Excel的數據導入到數據庫)3

2,數據源組件将Excel中的數據讀取出來,并傳遞給其他組件,數據源組件其實是有輸入和輸出的,輸入是指将Excel的數據導入到數據源組件中,輸出是指将數據源組件中導入的Excel數據向下傳遞。

打開數據源組件的Advanced editor,通過Show Advanced Editor來打開

怎麼将excel表導入到數據庫(把Excel的數據導入到數據庫)4

在Input and Output Properties選項卡中,External columns是Excel數據源組件的輸入列,Output Columns是Excel數據源組件的輸出列,每一列都是有DataType和CodePage。

默認情況下,SSIS的Excel連接器将Excel中的數字作為數值類型來對待

怎麼将excel表導入到數據庫(把Excel的數據導入到數據庫)5

對于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表導入到數據庫(把Excel的數據導入到數據庫)6

5,設置數據源組件和數據目标組件的列的mapping,execute package,成功導入13 rows 數據

怎麼将excel表導入到數據庫(把Excel的數據導入到數據庫)7

第二部分,将Excel中的數據類型修改為文本類型

6,如果Excel source 中的數據是文本類型,實現起來必須考慮CodePage。

修改示例Excel,将name列修改為文本類型

怎麼将excel表導入到數據庫(把Excel的數據導入到數據庫)8

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組件進行轉換

===================================

Package Validation Error (Package Validation Error)

===================================

Error at Data Flow Task [OLE DB Destination [166]]: Column "name" cannot convert between unicode and non-unicode string data types.

Error at Data Flow Task [SSIS.Pipeline]: "OLE DB Destination" failed validation and returned validation status "VS_ISBROKEN".

Error at Data Flow Task [SSIS.Pipeline]: One or more component failed validation.

Error at Data Flow Task: There were errors during task validation.

(Microsoft.DataTransformationServices.VsIntegration)

怎麼将excel表導入到數據庫(把Excel的數據導入到數據庫)9

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

怎麼将excel表導入到數據庫(把Excel的數據導入到數據庫)10

怎麼将excel表導入到數據庫(把Excel的數據導入到數據庫)11

由于列 copy of name是從Data Conversion中轉換而來的,所以隻需要修改一下轉換後的數據列的CodePage就可以了。

怎麼将excel表導入到數據庫(把Excel的數據導入到數據庫)12

10,設置列的mapping,再次Execute package,一路泛綠,成功導入13 rows

怎麼将excel表導入到數據庫(把Excel的數據導入到數據庫)13

第三部分,一點小總結

  • Excel的文本,默認的數據類型是Unicode,長度是255
  • DB中的Varchar 不是unicode類型,nvarchar是unicode類型
  • 如果codepage不一緻,可以通過data conversion組件進行轉換
,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
手機qq密保怎麼解除
手機qq密保怎麼解除
1、最簡單的辦法就是我們手機下載一個QQ安全中心,使用想要關閉密保的QQ号登錄QQ安全中心。2、進入QQ安全中心以後,在這裡有一個密保掃描,但是我們要點擊右下方的工具箱樣子的圖标。3、點開賬号保護”裡面下方的QQ保護”在手機QQ,電腦QQ登錄保護”右邊的按鈕關閉即可。4、還可以用電腦登陸網頁的QQ安全中心,找到右側有個忘記密保問題?點此申請重置密保”,進入申請重置密保頁面,填寫正确内容提交,重置申
2025-12-21
新浪微博如何快速通過興趣認證
新浪微博如何快速通過興趣認證
1、首先需要進入到微博的我的界面中,在界面中點擊并且打開客服中心。2、然後需要在客服中心中,可以看到一個選項,叫做申請加V點擊它。3、這樣就會來到微博認證的界面中,繼續點擊身份認證。4、進入到身份認證的界面後,往下翻,這裡有一個查看更多問題點擊。5、在這些問題中,就有一個叫做如何才能點亮興趣領域标簽的答疑點擊它。6、在這裡,就可以看到關于官方給出的點亮興趣領域标簽的正确做法。大概需要做的就是持續發
2025-12-21
寶駿車質量怎麼樣
寶駿車質量怎麼樣
1、寶駿這個品牌很年輕,加上幾年才第八年,正是一個年輕的品牌,它已經得到了許多消費者的認可。從去年的銷量數據中可以看到,2017年累計銷量超100萬輛,同比猛增24%。自寶駿品牌發布以來,累計銷量已突破300萬輛大關。2、國内SUV市場火爆,性價比高的寶駿SUV熱銷那是自然而然的,不過并不是寶駿的轎...
2025-12-21
cad全屏縮放快捷鍵
cad全屏縮放快捷鍵
演示機型:華為MateBookX系統版本:win10APP版本:CAD2013cad縮放窗口的快捷鍵是鼠标中鍵。其使用方法是按住鼠标中鍵并且使滾輪前後移動,可以讓窗口自由以任意比例變大變小。而雙擊鼠标中鍵,可以讓CAD圖紙能夠全屏顯示,再次雙擊,可以恢複到原來的窗口比例。除縮放窗口外,CAD還可以自由縮放窗口内的圖紙,其方法如下:1、在命令行輸入SC,在彈出的窗口中選擇SC(SCALE),按回車鍵
2025-12-21
vivo手機發熱怎麼辦
vivo手機發熱怎麼辦
1、充電、邊充電邊玩手機導緻的發熱。充電過程中,手機存在電能轉換發熱的狀況。如果這時再操作手機,CPU處于運行狀态,這樣會使手機發熱更明顯。另外,如果将手機放在被子或其他不容易讓手機散熱的物體上充電,如毛、棉、布質等物體,也會導緻手機溫度升高。建議将手機放在通風較好的環境下充電,充滿電後再操作手機,同時建議使用原裝充電器及充電線。2、長時間高負荷使用手機(如玩遊戲、看視頻、視頻通話、導航等)。長時
2025-12-21
Copyright 2023-2025 - www.tftnews.com All Rights Reserved