本地表、远程表的复制操作(SQL命令行)

让我们来看一个简单的表复制的T-sql操作(用SELECT复制表,只复制结构和数据,不会复制比如索引,外键等...)

SELECT *
INTO tb_Account_Bak
FROM tb_Account;
--复制表[tb_Account]的数据结构和所有数据到[tb_Account_Bak]表中。

注:[tb_Account_Bak]表如果已经存在,复制会失败。


SELECT Id,Name
INTO tb_Account_Bak
FROM tb_Account

--复制表[tb_Account]中的Id和Name字段到新表[tb_Account_Bak]表中。


SELECT Id,Name,Code
INTO tb_Account_Bak
FROM tb_Account
WHERE [Status]=1 AND [Type]=1

--复制[tb_Account]表中的Id、Name、Code字段,这里给出了条件,只复制满足Status=1和Type=1的记录。


SELECT *
INTO tb_Account_Bak
FROM tb_Account
WHERE 1=2
--只复制表结构,并不复制数据


下面,我们来看看怎么操作远程表的复制T-SQL

--1、首先要建立远程连接 注:TestConn为链接名称(随意),SQLOLEDB为链接方式,61.128.128.68为远程主机IP
EXEC sp_addlinkedserver 'TestConn','','SQLOLEDB','61.128.128.68'
--2、登陆
EXEC sp_addlinkedsrvlogin 'TestConn','false',NULL,'sa','password'

--3、复制远程表[tb_Account]到当前数据库
SELECT *
INTO tb_Account_Bak
FROM TestConn.Base.dbo.tb_Account
--TestConn为链接名 Base为库名 dbo为架构名 tb_Account为表表


为了复制方便,有时候我们可以创建一个存储过程来复制

CREATE PROCEDURE SP_CopyNewTable(@NewTableName varchar(50),@OldTableName varchar(50))
AS
BEGIN
    DECLARE @sql varchar(max)
    SET NOCOUNT ON;
    --如果新表名称已存在,先删除
    IF not exists(SELECT 1 FROM sys.objects WHERE name=@NewTableName and type='U')
    --复制
    SET @sql ='select * into '+ @NewTableName + ' from '+ @OldTableName;
    EXEC(@sql)
END
GO
--这个存储过程需要传入两个参数,NewTableName是生成表的名称,OldTalbeName为已有表的名称


EXEC SP_CopyNewTable 'tb_Account_Bak','tb_Account'
--以后复制表执行CopyNewTable就可以轻松复制了


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值