关于几个库中的表汇总到一个数据库中的问题,求教!!

钟伟海 2007-10-25 04:24:52
有4个数据库,结构完全相同,我现在需要把3个库的某几个表的数据,完全汇总放到另一个总库的对应的表中去,sqlservery有这种功能吗?谢谢了!
...全文
92 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
fcuandy 2007-10-25
  • 打赏
  • 举报
回复
今天有人问,才随手写了一个.

设.你的旧库为db1.你要从db1,中将数据导入新库. 新库为变量@newDb,你等下自己改参数.
如果你有db1,db2,db3,db4 共4个库数据要导入 @newDb
那么 执行4次就行了, 每次 Use dbN (将dbN换为你要导数据的库名即可)


USE db1
DECLARE @fieldsList VARCHAR(1000),@curTableName VARCHAR(50),@i INT,@k INT,@newDB VARCHAR(20),@sql VARCHAR(8000)

SELECT id=identity(INT),name INTO #tables FROM sysobjects WHERE xtype='u' AND name!='dtproperties'

SELECT @i=1,@curTableName='',@newDB='test',@k=COUNT(*) FROM #tables

WHILE @i<=@k
BEGIN
SET @fieldsList=''
SELECT @curTableName=name FROM #tables
SELECT @fieldsList=@fieldsList + ',' + name FROM syscolumns WHERE id=object_id(@curTableName) AND COLUMNPROPERTY(id,name,'IsIdentity')=0
SELECT @fieldsList=STUFF(@fieldsList,1,1,'')
SELECT @sql='IF EXISTS (SELECT 1 FROM ' + @newDb + '..sysobjects WHERE xtype=''u'' AND name=''' + @curTableName + ''') INSERT ' + @newDb + '..' + @curTableName + '(' + @fieldsList + ') SELECT ' + @fieldsList + ' FROM ' + @curTableName + ' ELSE SELECT * INTO ' + @newDb + '..' + @curTableName + ' FROM ' + @curTableName
EXEC(@sql)
SET @i=@i+1
END

DROP TABLE #tables




原文地址.
http://blog.csdn.net/fcuandy/archive/2007/10/25/1843555.aspx
dawugui 2007-10-25
  • 打赏
  • 举报
回复
有4个数据库,结构完全相同,我现在需要把3个库的某几个表的数据,完全汇总放到另一个总库的对应的表中去,sqlservery有这种功能吗?谢谢了!

第一种方法:
使用SQL SERVER的导入导出工具,然后从三个数据库把数据导入到目标数据库.导入是选择插入,不要选择创建.

第二种方法:
如上钻石所说,建立连接后使用SQL语句.

insert into tbname select * from servername1.dbname1.dboname1.tbname1
insert into tbname select * from servername2.dbname2.dboname2.tbname2
insert into tbname select * from servername3.dbname3.dboname3.tbname3
子陌红尘 2007-10-25
  • 打赏
  • 举报
回复
链接服务器:

--创建链接服务器
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','远程服务器名或ip地址'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'用户名','密码'
go

--查询示例
select * from srv_lnk.数据库名.dbo.表名

--导入示例
select * into 表 from srv_lnk.数据库名.dbo.表名

--以后不再使用时删除链接服务器
exec sp_dropserver 'srv_lnk','droplogins'
go

--如果只是临时访问,可以直接用openrowset
--查询示例
select * from openrowset('SQLOLEDB'
,'sql服务器名';'用户名';'密码'
,数据库名.dbo.表名)


--导入示例
select * into 表 from openrowset('SQLOLEDB'
,'sql服务器名';'用户名';'密码'
,数据库名.dbo.表名)

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧