11,849
社区成员
发帖
与我相关
我的任务
分享
declare @SourceDBName nvarchar(125);
declare @SourceTableName nvarchar(125);
declare @SourceSchemaName nvarchar(125);
declare @SQLCmd nvarchar(max);
declare @TargetDBName nvarchar(125);
declare @TargetSchemaName nvarchar(125);
set @SourceDBName = 'SourceDB';
set @TargetDBName = 'TargetDB';
set @TargetSchemaName = 'dbo';
-- help out all user tables
declare curTables cursor for
select
obj.name as TableName
,sch.name as SchemaName
from sys.objects obj
join sys.schemas sch
on sch.schema_id = obj.schema_id
where obj.type = 'U';
open curTables
fetch next from curTables
into @SourceTableName, @SourceSchemaName;
-- loop select top 100* into
while @@FETCH_STATUS = 0
begin
if OBJECT_ID(@TargetDBName + '.' + @TargetSchemaName + '.' + @SourceTableName, 'U') is not null
begin
set @SQLCmd = 'drop table ' + @TargetDBName + '.' + @TargetSchemaName + '.' + @SourceTableName;
exec sp_executesql @SQLCmd
end
set @SQLCmd = 'select top 100 *' + ' ' +
'into ' + @TargetDBName + '.' + @TargetSchemaName + '.' + @SourceTableName + ' ' +
'from ' + @SourceSchemaName + '.' + @SourceTableName
exec sp_executesql @SQLCmd ;
fetch next from curTables
into @SourceTableName, @SourceSchemaName;
end
close curTables;
deallocate curTables;