【问题标题】:How to transfer one table from server 1 to the table in server 2?如何将一个表从服务器 1 转移到服务器 2 中的表?
【发布时间】:2019-01-30 22:22:32
【问题描述】:

假设我在两个不同的服务器上有两个数据库:

server1:
ip 127.0.0.1
user1, passwd1
db1.tbl1

server2:
ip 127.0.0.2
user2, passwd2
db2.tbl2

假设tb1tb2 具有相同的表结构。我已经搜索了网络,people suggest to set up linked-servers,但我不想设置。

既然我知道密码和IP地址,事情应该会很简单:

insert into db2.tbl2 
    select *  
    from db1.tbl1

但是我不知道把ip地址和用户名密码放在哪里。

【问题讨论】:

  • 为什么不直接将表1中的数据提取到csv中,然后使用insert到表2中呢?链接的服务器可能非常慢..
  • @JoshAdams 我只想知道怎么做,把密码和用户名放在哪里。我知道如何离线操作。
  • @buzhidao 如果你不想设置链接服务器,你试过look up在SSIS和merge表中的转换

标签: sql sql-server database


【解决方案1】:

试试这个(在server1上运行):

INSERT INTO [db1].[tbl1]
SELECT * FROM OPENDATASOURCE(
    'SQLOLEDB',
    'Data Source=127.0.0.2;Initial Catalog=db2;Persist Security Info=True;User ID=user2;Password=passwd2'
).db2.tbl2

您可以参考this article

【讨论】:

    【解决方案2】:

    您使用许多 RDBMS 标记了您的问题。

    我的回答是关于 SQL Server。

    既然我知道密码和IP地址,事情应该很容易 像这样:insert into db2.tbl2 select * from db1.tbl1

    这正是您可以在linked servers 的情况下使用的语法。您在链接服务器的定义中封装了连接字符串,那么唯一改变的是代码中的链接服务器名称:

    insert into db2.tbl2 select * from server1.db1.tbl1

    链接服务器设置示例:

    EXEC master.dbo.sp_addlinkedserver @server = N's_2005', @srvproduct=N'', @provider=N'SQLNCLI', @datasrc=N'127.0.0.1,8851'
    go
    EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N's_2005',@useself=N'False',@locallogin=NULL,@rmtuser=N'login1',@rmtpassword='*****'
    go
    
    select top 5 * from [s_2005].[Northwind].[dbo].[Employees]
    

    如果你想要其他解决方案,可以使用OPENROWSET (Transact-SQL)

    每次您想访问远程服务器时,在您的INSERT 中提供整个连接字符串:

    select a.* from openrowset('SQLNCLI', 'Server=127.0.0.1,8851;Trusted_Connection=no;uid=login1;pwd=*****;', 'select top 5 * from [Northwind].[dbo].[Employees]') as a
    

    第三个选项是SSIS,您将连接字符串封装到SourceConnectionDestinationConnection

    这是使用linked serveropenrowset 得到相同结果的图片:

    【讨论】:

    • 那么我应该把ip地址、用户名和密码准确地放在哪里?
    • 我给了你3个选择,你说的是什么选择?
    • 我觉得第一个是最简单的,不然我想先下载数据再上传到目的表。
    • 对不起?所有 3 都要求您从一台服务器获取数据并加载到另一台服务器,没有奇迹或“仅元数据切换”。你问我如何设置链接服务器?您未来的链接服务器 SQL Server 是什么?
    • 我在问有没有insert into db2.tbl2 select * from server1.db1.tbl1之类的单行代码,不用设置,使用其他软件等...
    【解决方案3】:

    如果您使用的是 SQL Server Management Studio,那么有一个向导可以在服务器和数据库之间导入/导出数据:

    https://docs.microsoft.com/en-us/sql/integration-services/import-export-data/start-the-sql-server-import-and-export-wizard?view=sql-server-2017

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-12
      • 2018-08-07
      相关资源
      最近更新 更多