• mssql借助链接服务器进行数据快速迁移


    在工作中,遇到了一个任务,需要将A数据库的数据迁移到B数据库,两个数据库的数据结构是一样的。B数据库已经在相当数量的数据了,故而不能通过复制数据库的方式来实现。

     旧方法

        在对数据迁移的时候,一开始使用的是以下方法:

    (1)使用SSMS的”生成和发布脚本”功能,将A数据库的数据导出成sql脚本。

     

    脚本类似于:

    INSERT [dbo].[region] ([id], [region_id], [region_name], [region_code]) VALUES (10649, 0, N'其他', N'0000000')
    
    INSERT [dbo].[region] ([id], [region_id], [region_name], [region_code]) VALUES (1, 2, N'成都', N'1398098')
    
    INSERT [dbo].[region] ([id], [region_id], [region_name], [region_code]) VALUES (2, 2, N'成都', N'1360804')
    
    INSERT [dbo].[region] ([id], [region_id], [region_name], [region_code]) VALUES (3, 2, N'成都', N'1398198')
    
    INSERT [dbo].[region] ([id], [region_id], [region_name], [region_code]) VALUES (4, 2, N'成都', N'1398195')
    
    INSERT [dbo].[region] ([id], [region_id], [region_name], [region_code]) VALUES (5, 2, N'成都', N'1355114')
    
    INSERT [dbo].[region] ([id], [region_id], [region_name], [region_code]) VALUES (6, 2, N'成都', N'1390807')
    
    INSERT [dbo].[region] ([id], [region_id], [region_name], [region_code]) VALUES (7, 2, N'成都', N'1370804')
    
    INSERT [dbo].[region] ([id], [region_id], [region_name], [region_code]) VALUES (8, 2, N'成都', N'1398071')
    
    INSERT [dbo].[region] ([id], [region_id], [region_name], [region_code]) VALUES (9, 2, N'成都', N'1365808')

     (2)将生成sql脚本在B数据库上执行。

    问题与困难

    采用这种方式应对几千条数据还是没有问题的,但是当数据达到10万的时候,速度真是慢得令人发指。

    新方法

    通过探索,自创了一种新方法。

    (1)使用链接服务器,在B数据库所在数据库服务器上建立一个链接服务器,指向A数据库。这样一来,在B数据库中就能直接操作A数据库了。

    (2)使用insert into() select form 语句,直接将A数据库中查到的数据插入到B数据库中。

    将上面的脚本改造成类似于:

     1 INSERT  INTO [dbo].[region]
     2         ( [id] ,
     3           [region_id] ,
     4           [region_name] ,
     5           [region_code]
     6         )
     7         SELECT  [id] ,
     8                 [Bundling] ,
     9                 [region_id] ,
    10                 [region_name] ,
    11                 [region_code]
    12         FROM    [Xianjie].[A].[dbo].[region]

    迁移的速度得到了百倍以上的提升。哈哈

  • 相关阅读:
    Linux下Maven的安装与使用
    Vue1.0用法详解
    一个异步访问redis的内存问题
    jquery和zepto的异同
    我的学习归纳方法(以学习Maven为例)
    最显而易见的设计最容易成功
    Linux Command Backup
    Turn and Stun server · J
    Android apk签名详解——AS签名、获取签名信息、系统签名、命令行签名
    Leetcode 981. Time Based Key-Value Store(二分查找)
  • 原文地址:https://www.cnblogs.com/dehai/p/4889775.html
Copyright © 2020-2023  润新知