如何在两结构完全相同的数据库表间导数据insert into [test1].[dbo].[table1]
select * from [test2].[dbo].[table1]
或者
insert into [test1].[dbo].[table1]
(field1,field2…)
select field1,field2… from [test2].[dbo].[table1]
select * from [test2].[dbo].[table1]
或者
insert into [test1].[dbo].[table1]
(field1,field2…)
select field1,field2… from [test2].[dbo].[table1]
解决方案 »
- 想学习sql server 2005数据库,推荐下有哪些经典书籍
- 不用其他表怎么将两列的值互换
- Oracle有遍历树的查询,MS Sql有没有?
- 想对表中同一列的数列进行运算应该如何实现
- 高分急求答案!sql2008 数据库创建分区表,用分区表查询比用源表查询慢,求解
- SQL SERVER 2008R2 安装好了以后 编写SQL语句没有提示怎么办?
- 用sql语言比较相邻记录中数值相同的个数???
- 怎样指定建库的缺省路径?
- 建立分发服务器时指定本机为分发服务器,但是提示:启动数据库代理的帐户是系统帐户,服务器之间复制会出错。
- 谁有POWERDISIGNER9的中文资料!如果有用可以给300分
- 菜鸟问题
- db-library:如何王数据库里插入binary类型的数据
ALTER TABLE trig_example DISABLE TRIGGER trig1
drop procedure [dbo].[p_copydb]
GO
/*--数据库数据复制 将一个数据库中的数据复制到另一个数据库
如果某列在目标数据库中为标识列,将不会被复制 适用范围:数据库结构发生了变化,想将旧数据库进行升级
这样就可以根据新的数据库结构创建一个空库,然后
将旧数据库的所有数据复制到新库中
--邹建 203.10--*//*--调用示例 exec p_copydb 'bns_aa','bns_new'
exec p_copydb 'acc_五医','acc_演示数据8'
--*/
create proc p_copydb
@o_dbname sysname, --要复制数据的数据库--源数据库
@n_dbname sysname --接收数据的数据库--目标数据库
--@cleardb bit=0 --清空目标数据库
as
declare @sql nvarchar(4000)--禁用约束/触发器,防止复制时的数据冲突
set @sql='declare #tbc cursor for select name
from '+@n_dbname+'..sysobjects where xtype=''U'' and status>=0'
exec(@sql)declare @tbname sysname
open #tbc
fetch next from #tbc into @tbname
while @@fetch_status=0
begin
set @sql='alter table '+@n_dbname+'..['+@tbname+'] NOCHECK CONSTRAINT ALL'
exec(@sql)
set @sql='alter table '+@n_dbname+'..['+@tbname+'] disable trigger ALL'
exec(@sql)
fetch next from #tbc into @tbname
end
close #tbc--复制数据
declare @sql1 varchar(8000)
set @sql='declare #tb cursor for select a.name from '
+@o_dbname+'..sysobjects a inner join '
+@n_dbname+'..sysobjects b on a.name=b.name
where a.xtype=''U'' and b.xtype=''U'''
exec(@sql)
open #tb
fetch next from #tb into @tbname
while @@fetch_status=0
begin
select @sql1=''
,@sql='select @sql1=@sql1+'',[''+a.name+'']'' from(
select name from '+@o_dbname+'..syscolumns where id in
(select id from '+@o_dbname+'..sysobjects where name='''+@tbname+''')
) a inner join (
select name from '+@n_dbname+'..syscolumns where status<>0x80 and id in
(select id from '+@n_dbname+'..sysobjects where name='''+@tbname+''')
) b on a.name=b.name'
exec sp_executesql @sql,N'@sql1 nvarchar(4000) out',@sql1 out select @sql1=substring(@sql1,2,8000)
exec('insert into '+@n_dbname+'..['+@tbname+']('+@sql1
+') select '+@sql1+' from '+@o_dbname+'..['+@tbname+']')
if @@error<>0
print('insert into '+@n_dbname+'..['+@tbname+']('+@sql1
+') select '+@sql1+' from '+@o_dbname+'..['+@tbname+']')
fetch next from #tb into @tbname
end
close #tb
deallocate #tb--数据复制完成后启用约束
open #tbc
fetch next from #tbc into @tbname
while @@fetch_status=0
begin
set @sql='alter table '+@n_dbname+'..['+@tbname+'] CHECK CONSTRAINT ALL'
exec(@sql)
set @sql='alter table '+@n_dbname+'..['+@tbname+'] enable trigger ALL'
exec(@sql)
fetch next from #tbc into @tbname
end
close #tbc
deallocate #tbc
go