本篇内容主要讲解“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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。