Sql 匯入 EXCEL 通用儲存過程

2021-04-27 22:05:31 字數 3590 閱讀 4284

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

------------------------------------分割線---------------------------------------------

create

procedure

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 遵從行為。...