sql 匯入excel 通用儲存過程
/*
--下面兩句在建立儲存過程時必須先執行,否則不能建立本儲存過程,或者呼叫出錯
set ansi_warnings on--返回警告 go
set ansi_nulls on-- 指定在對空值使用等於(=) 和不等於(<>) 比較運算子時,這些運算子的sql-92 遵從行為。 go
--將excel資料匯入到sql資料庫
--版權: 啟程letwego.cn
--呼叫例項
exec spexceloutin
@stroptions = 'in',
@strwhere = 'where 房號》0',--匯入/匯出查詢條件(包括where 關鍵字)
@strexcelpath = 'd:/test.xls',--excel的絕對路徑
@strexcelsheetname = 'sheet2',--excel裡要匯入的工作表名稱 如sheet2,注意,後面不要加上$
@strexcelfiled = '單元編號,單元名稱,房號,建築面積,樓層,樓層名稱,樓閣編號,業主',--excel工作表的字段
@strsqltablename = 'texceloutin',--sql資料庫匯入表名
@strsqlfiled = '單元編號,單元名稱,房號編號,建築面積,樓層,樓層名稱,樓閣編號,業主編號'--sql表的字段 */
create
procedure
spexceloutin
@stroptions
varchar
(200)
=null,
@strwhere
nvarchar
(4000)
=null
,--匯入/匯出查詢條件(包括where 關鍵字)
@strexcelpath
nvarchar
(1000)
=null
,--excel的絕對路徑
@strexcelsheetname
nvarchar
(50)
=null
,--excel裡要匯入的工作表名稱 如sheet2,注意,後面不要加上$
@strexcelfiled
nvarchar
(1000)
=null
,--excel工作表的字段
@strsqltablename
nvarchar
(100)
=null
,--sql資料庫匯入/匯出表名
@strsqlfiled
nvarchar
(1000)
=null
--sql表的字段
as declare
@strsql
nvarchar
(4000)
ifobject_id
('tempdb..##temp'
) is
notnull
drop
table
##temp
/* 匯入*/ if
@stroptions
='in'
andnot
@strexcelpath
isnull
begin
set@strexcelpath
='''microsoft.jet.oledb.4.0'',''data source="'
+@strexcelpath
+'";user id=admin;password=;extended properties=excel 5.0'''
--將資料存放到臨時表(一)
set@strsql=
'select '
+@strexcelfiled+
' into ##temp
from
opendatasource('
+@strexcelpath
+')...'
+@strexcelsheetname
+'$ ' +
@strwhere
--print(@strsql)
exec
(@strsql)
--將資料從臨時表匯入到sql資料庫表(二,分兩步可以做更多的處理)
set@strsql
='insert into '
+@strsqltablename
+'('
+@strsqlfiled
+') select * from ##temp'
--print(@strsql)
exec
(@strsql)
--select * from ##temp
drop
table
##temp
end
/* 匯出*/ if
@stroptions
='out'
andnot
@strexcelpath
isnull
begin
set@strexcelpath=''
--導成類似(不是真正的excel,是文字格式)excel的檔案,這裡是固定的,真正用時需要修改相關引數
--exec master..xp_cmdshell 'bcp "select * from wy_福州分公司.dbo.texceloutin" queryout c:/test.xls -c -s"(local)" -u"sa" -p"123"'
end go
------------------------------------分割線---------------------------------------------
createprocedure
import
( @tablename
varchar
( 100
), @filepath
varchar
( 100
) ) as
declare
@svarchar
( 8000
) set@s=
' insert into
'
+
@tablename
+ '
select * from openrowset
( ''
microsoft.jet.oledb.4.0
'', ''
excel 8.0; hdr=yes; database =
' +
@filepath
+ '
,sheet1$)
' exec
( @s
)
Sql 匯入 EXCEL 通用儲存過程
sql 匯入 excel 通用儲存過程 2008 01 10 15 41 下面兩句在建立儲存過程時必須先執行,否則不能建立本儲存過程,或者呼叫出錯 set ansi warnings on 返回警告 goset ansi nulls on 指定在對空值使用等於 和不等於 比較運算子時,這些運算子的 ...
Sql 匯入 EXCEL 通用儲存過程
sql 匯入 excel 通用儲存過程 下面兩句在建立儲存過程時必須先執行,否則不能建立本儲存過程,或者呼叫出錯 set ansi warnings on 返回警告 goset ansi nulls on 指定在對空值使用等於 和不等於 比較運算子時,這些運算子的 sql 92 遵從行為。go 將e...
Sql 匯入 EXCEL 通用儲存過程 收藏
code sql 匯入 excel 通用儲存過程 下面兩句在建立儲存過程時必須先執行,否則不能建立本儲存過程,或者呼叫出錯 set ansi warnings on 返回警告 goset ansi nulls on 指定在對空值使用等於 和不等於 比較運算子時,這些運算子的 sql 92 遵從行為。...