1. 程式人生 > >快速地將Excel資料匯入到SQL2005中的方法

快速地將Excel資料匯入到SQL2005中的方法

在查詢分析器裡,直接寫SQL語句:
--啟用Ad Hoc Distributed Queries:
exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
--使用完成後,關閉Ad Hoc Distributed Queries:
exec sp_configure 'Ad Hoc Distributed Queries',0
reconfigure
exec sp_configure 'show advanced options',0
reconfigure

--全部列

insert into 學籍資訊 SELECT * FROM OPENROWSET( 'MICROSOFT.JET.OLEDB.4.0','Excel 8.0;IMEX=1;HDR=YES;DATABASE=E:\學籍資訊.xls',[學籍資訊$])

--部分列
insert into 學籍資訊 (學籍號,姓名) SELECT 學籍號,姓名 FROM OPENROWSET( 'MICROSOFT.JET.OLEDB.4.0','Excel 8.0;IMEX=1;HDR=YES;DATABASE=E:\學籍資訊.xls',[學籍資訊$])

***************************************************************************************


如果是匯入資料到現有表,則採用
INSERT INTO 表 SELECT * FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)
的形式


如果是匯入資料並新增表,則採用
SELECT * INTO 表 FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)
的形式。
 
以上語句是將EXCEL檔案裡SHEET1工作表中所有的列都讀進來,如果只想導部分列,可以
INSERT INTO 表(a1,a2,a3) SELECT a1,a2,a3 FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)
 
其實可以將OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)當成一個表,例如我就寫過這樣一個句子: 
INSERT INTO eval_channel_employee(channel,employee_id)
SELECT CASE a.渠道 WHEN 'DIY' THEN 1 WHEN 'RDC' THEN 0 WHEN 'KCM' THEN 2 ELSE 3 END
,b.id FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 5.0;HDR=YES;DATABASE=c:\temp\name.xls',sheet1$) AS a,pers_employee b
WHERE a.員工編碼=b.code
 
不管是哪種方式,哪種途徑,系統都會預設將第一行上的內容作為欄位名。
這二種方式雖然非常好,但操作過程不太方便,經過測試發現在SQL2005中直接可以實現匯入功能。操作過程如下:
第一步:登入到SQL Server Management Studio,
第二步:在“物件資源管理器”中右鍵單擊“管理”,在彈出列表中單擊“匯入資料”
第三步:在“匯入嚮導”對話方塊中單擊“下一步”,進入到“選擇資料來源”對話方塊,在“資料來源”列表中選擇“Microsoft Excel ”

,同時選擇相應的Excel 文件,完成後單擊“下一步”(一定要勾選該對話方塊中的“首行包含列名稱”,因此它是將Excel文件中的

列標題為資料庫表中的列項標題)
第四步:指定目標資料庫服務,依次單擊“下一步”。。。。至到“完成”
第五步:重新打到SQL Server Management Studio,進入到匯入的資料庫表,可以發現所匯入的Excel文件資料。