如何将表值从一个数据库插入另一个数据库?[关闭]


Answers:


157

这个怎么样:

USE TargetDatabase
GO

INSERT INTO dbo.TargetTable(field1, field2, field3)
   SELECT field1, field2, field3
     FROM SourceDatabase.dbo.SourceTable
     WHERE (some condition)

3
10年后...仍然非常感谢。
克里斯·卡蒂尼亚尼

@ChrisCatignani:谢谢!一些永恒的答案;-)
marc_s

33

如何将表值从一个服务器/数据库插入到另一个数据库?

1创建链接服务器{如果需要}(SQL Server 2008 R2-2012) http://technet.microsoft.com/zh-cn/library/ff772782.aspx#SSMSProcedure

2配置链接服务器以使用凭据a)http://technet.microsoft.com/es-es/library/ms189811(v= sql.105) .aspx

EXEC sp_addlinkedsrvlogin 'NAMEOFLINKEDSERVER', 'false', null, 'REMOTEUSERNAME', 'REMOTEUSERPASSWORD'

-检查服务器

SELECT * FROM sys.servers

-测试链接服务器

EXEC sp_testlinkedserver N'NAMEOFLINKEDSERVER'

插入新的本地表

SELECT * INTO NEWTABLE
FROM [LINKEDSERVER\INSTANCE].remoteDATABASE.remoteSCHEMA.remoteTABLE

要么

作为新值插入到远程表中

INSERT
INTO    [LINKEDSERVER\INSTANCE].remoteDATABASE.remoteSCHEMA.remoteTABLE
SELECT  *
FROM    localTABLE

作为新的本地表值插入

INSERT
INTO    localTABLE
SELECT  *
FROM    [LINKEDSERVER\INSTANCE].remoteDATABASE.remoteSCHEMA.remoteTABLE

10

这是一种快速简便的方法:

CREATE TABLE database1.employees
AS
SELECT * FROM database2.employees;

10
    --Code for same server
USE [mydb1]
GO

INSERT INTO dbo.mytable1 (
    column1
    ,column2
    ,column3
    ,column4
    )
SELECT column1
    ,column2
    ,column3
    ,column4
FROM [mydb2].dbo.mytable2 --WHERE any condition

/*
steps-
    1-  [mydb1] means our opend connection database 
    2-  mytable1 the table in mydb1 database where we want insert record
    3-  mydb2 another database.
    4-  mytable2 is database table where u fetch record from it. 
*/

--Code for different server
        USE [mydb1]

    SELECT *
    INTO mytable1
    FROM OPENDATASOURCE (
            'SQLNCLI'
            ,'Data Source=XXX.XX.XX.XXX;Initial Catalog=mydb2;User ID=XXX;Password=XXXX'
            ).[mydb2].dbo.mytable2

        /*  steps - 
            1-  [mydb1] means our opend connection database 
            2-  mytable1 means create copy table in mydb1 database where we want 
                insert record
            3-  XXX.XX.XX.XXX - another server name.
            4-  mydb2 another server database.
            5-  write User id and Password of another server credential
            6-  mytable2 is another server table where u fetch record from it. */

6

你可以试试

Insert into your_table_in_db1 select * from your_table_in_db2@db2SID 

db2SID是其他数据库的sid。它将出现在tnsnames.ora文件中


1
INSERT
INTO    remotedblink.remotedatabase.remoteschema.remotetable
SELECT  *
FROM    mytable

关系数据库中没有“表的末端”之类的东西。


0

如果两个表具有相同的架构,则使用此查询: 插入到database_name.table_name中,选择* from new_database_name.new_table_name where ='condition'

用第一个数据库的名称替换database_name,用要复制的表的名称替换table_name,用要复制的其他数据库的名称替换new_database_name,并且new_table_name是表的名称。


0

去做就对了.....

(它将创建与从表到具有相同数据的表相同的表结构)

 create table toDatabaseName.toTableName as select * from fromDatabaseName.fromTableName;


0

通常,我们在迁移脚本中需要这种类型的查询

INSERT INTO  db1.table1(col1,col2,col3,col4)
SELECT col5,col6,col7,col8
  FROM db1.table2

在此查询中,两个表中的列数必须相同

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.