SQL Server數(shù)據(jù)庫遠(yuǎn)程查詢并批量導(dǎo)入數(shù)據(jù)
作者:感恩的心
本文我們主要介紹了SQL Server數(shù)據(jù)庫遠(yuǎn)程查詢并批量導(dǎo)入數(shù)據(jù)的操作,并給出了詳細(xì)的代碼示例,希望能夠?qū)δ兴鶐椭?/div>
SQL Server數(shù)據(jù)庫遠(yuǎn)程查詢并批量導(dǎo)入數(shù)據(jù)的方法是本文我們主要要介紹的內(nèi)容,接下來就讓我們一起來了解一下這部分內(nèi)容吧。
應(yīng)用背景:
兩個(gè)數(shù)據(jù)庫的表結(jié)構(gòu)相同,但表名前綴不一樣,現(xiàn)要保持原有的數(shù)據(jù)表的ID導(dǎo)過來不變。用數(shù)據(jù)庫批量導(dǎo)入/導(dǎo)出工具行不通,只能自己寫SQL語句。奈何有180多個(gè)表,手工寫肯定是累S個(gè)人。
解決辦法:
先用 OpenDataSource 遠(yuǎn)程連接服務(wù)器,然后執(zhí)行插入語句可行。其語句如下:
- truncatetableActUser
- SETIDENTITY_INSERTActUseron
- insertintoActUser(
- [ID],[PassWord],[UserName]
- )select
- [ID],[PassWord],[UserName]
- fromopendatasource('SQLOLEDB','datasource=DBSERVERIP;uid=sa;password=sa').TEST.dbo.ActUser
- SETIDENTITY_INSERTActUseroff
然后我想到用游標(biāo)結(jié)合 sysobjects和syscolumns 來實(shí)現(xiàn)自動(dòng)生成這樣的語句,其代碼如下:
- declaremycursorcursor
- for
- select[id],[name]fromdbo.sysobjectswheretype='U'
- openmycursor
- declare@tablenamesysname
- declare@tableidsysname
- fetchnextfrommycursorinto@tableid,@tablename--獲取表名
- while(@@fetch_status=0)
- begin
- print'--['+@tablename+']'
- --拼湊字段,將行轉(zhuǎn)為字符串--
- DECLARE@fieldsvarchar(8000)
- set@fields=''
- SELECT@fields=''+@fields+'],['+nameFROMsyscolumnsWHEREid=object_id(@tablename)ORDERBYcolid
- set@fields='['+STUFF(@fields,1,3,'')+']'
- --拼湊字段End--
- --print@fields
- /*******避免因字段過長(zhǎng)而導(dǎo)致截?cái)嗲樾?*******/
- print'truncatetable'+@tablename--清理數(shù)據(jù)
- print'SETIDENTITY_INSERT'+@tablename+'on'--可使自增長(zhǎng)列轉(zhuǎn)為可插入數(shù)據(jù),不用重新生成ID
- print'insertinto'+@tablename+'('
- print@fields
- print')select'
- print@fields
- print'fromopendatasource('
- +'''SQLOLEDB'',''datasource=DBServerIP;uid=sa;password=sa'').TEST.dbo.'
- +replace(@tablename,'Wait_','Has_')
- print'SETIDENTITY_INSERT'+@tablename+'off'
- printchar(13)--換行
- fetchnextfrommycursorinto@tableid,@tablename
- end
- closemycursor
- deallocatemycursor
將生成的SQL 語句放到查詢分析器里執(zhí)行一下,生成SQL 語句,然后執(zhí)行一下,就可以成功地批量導(dǎo)入數(shù)據(jù)了。
關(guān)于SQL Server數(shù)據(jù)庫遠(yuǎn)程查詢并批量導(dǎo)入數(shù)據(jù)的方法就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!
【編輯推薦】
責(zé)任編輯:趙鵬
來源:
博客園


相關(guān)推薦




