导数据

从Erp库中把数据导入到 BanChe56 的库。 写一个存储过程。

 

复制代码
CREATE proc [dbo].[Dev_MoveTableData]( @ToTable varchar(50), @FromTable varchar(50) , @useId bit , @IDFrom int ,@execute bit ) as begin

declare @sql nvarchar(4000);
declare @columns varchar(500);

if( @FromTable is null) set @FromTable = @ToTable;

set @sql = N'select * from Erp.dbo.[' + @FromTable + ']' ;

exec sp_executesql @sql;

set @sql = '';

if( @useId = 1) begin
    set @sql = N'
set identity_insert BanChe56.dbo.[$ToTable$] on
insert into BanChe56.dbo.[$ToTable$] ($AllColumns$) 
select $AllColumns$ from Erp.dbo.[$FromTable$] where ID > $IDFrom$
set identity_insert BanChe56.dbo.[$ToTable$] off
' ;


    select @columns = '[' + dbo.JoinStr2(name, '],[') + ']' from sys.columns where object_id = object_id(@ToTable) and is_computed = 0 ;

    set @sql = REPLACE(@sql,'$AllColumns$',@columns) ;
    
end else begin
    set @sql = N'
insert into BanChe56.dbo.[$ToTable$] ($Columns$) 
select $Columns$ from Erp.dbo.[$FromTable$] where ID > $IDFrom$
' ;

    select @columns = '[' + dbo.JoinStr2(name, '],[') + ']' from sys.columns where object_id = object_id(@ToTable)  and is_computed = 0 and is_identity = 0;

    set @sql = REPLACE(@sql,'$Columns$',@columns) ;
end 

set @sql = replace(@sql,'$FromTable$',@FromTable);
set @sql = replace(@sql,'$ToTable$',@ToTable);
set @sql = replace(@sql,'$IDFrom$', cast( @IDFrom as varchar(50)) );
 
    print @sql ;
    
    if( @execute =1 ) begin
        exec  sp_executesql @sql ;
    end ;

end ;
GO
复制代码

 

 检查有数据的表:

SELECT a.name FROM sys.sysobjects AS a
WHERE EXISTS(

SELECT 1 FROM sys.sysindexes AS x
 WHERE x.id=a.id  AND x.rows>0 )
 AND a.type='U'

 

posted @   NewSea  阅读(269)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
历史上的今天:
2008-12-21 页面打开 Trace ,IE7内存暴涨。
2007-12-21 SqlServer2005 中有没有类似 Oralce 的 RowID 的伪列?
点击右上角即可分享
微信分享提示