您好,登錄后才能下訂單哦!
本篇內容主要講解“SQLServer數據庫怎么遠程查詢并批量導入數據”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“SQLServer數據庫怎么遠程查詢并批量導入數據”吧!
SQLServer數據庫遠程查詢并批量導入數據的方法有哪些
應用背景:
兩個數據庫的表結構相同,但表名前綴不一樣,現要保持原有的數據表的ID導過來不變。用數據庫批量導入/導出工具行不通,只能自己寫SQL語句。奈何有180多個表,手工寫肯定是累S個人。
解決辦法:
先用OpenDataSource遠程連接服務器,然后執行插入語句可行。其語句如下:
truncatetableActUserSETIDENTITY_INSERTActUseroninsertintoActUser([ID],[PassWord],[UserName])select[ID],[PassWord],[UserName]fromopendatasource('SQLOLEDB','datasource=DBSERVERIP;uid=sa;password=sa').TEST.dbo.ActUserSETIDENTITY_INSERTActUseroff
SQLServer數據庫遠程查詢并批量導入數據的方法有哪些
然后我想到用游標結合sysobjects和syscolumns來實現自動生成這樣的語句,其代碼如下:
declaremycursorcursorforselect[id],[name]fromdbo.sysobjectswheretype='U'openmycursordeclare@tablenamesysnamedeclare@tableidsysnamefetchnextfrommycursorinto@tableid,@tablename--獲取表名while(@@fetch_status=0)beginprint'--['+@tablename+']'--拼湊字段,將行轉為字符串--DECLARE@fieldsvarchar(8000)set@fields=''SELECT@fields=''+@fields+'],['+nameFROMsyscolumnsWHEREid=object_id(@tablename)ORDERBYcolidset@fields='['+STUFF(@fields,1,3,'')+']'--拼湊字段End----print@fields/*******避免因字段過長而導致截斷情形********/print'truncatetable'+@tablename--清理數據print'SETIDENTITY_INSERT'+@tablename+'on'--可使自增長列轉為可插入數據,不用重新生成IDprint'insertinto'+@tablename+'('print@fieldsprint')select'print@fieldsprint'fromopendatasource('+'''SQLOLEDB'',''datasource=DBServerIP;uid=sa;password=sa'').TEST.dbo.'+replace(@tablename,'Wait_','Has_')print'SETIDENTITY_INSERT'+@tablename+'off'printchar(13)--換行fetchnextfrommycursorinto@tableid,@tablenameendclosemycursordeallocatemycursor
將生成的SQL語句放到查詢分析器里執行一下,生成SQL語句,然后執行一下,就可以成功地批量導入數據了。
到此,相信大家對“SQLServer數據庫怎么遠程查詢并批量導入數據”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。