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

Posted

技术标签:

【中文标题】如何将表值从一个数据库插入到另一个数据库? [关闭]【英文标题】:How to insert table values from one database to another database? [closed] 【发布时间】:2011-03-30 22:59:40 【问题描述】:

如果目标表已经存在,我想要一个查询将记录从一个表插入到另一个数据库中的另一个表,它应该将记录附加到表的末尾。

【问题讨论】:

【参考方案1】:

大多数情况下,我们在迁移脚本中需要这种类型的查询

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

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

【讨论】:

【参考方案2】:

对于 SQL Server,您可以使用工具从另一个数据库导入数据,更容易配置映射列。

【讨论】:

【参考方案3】:

去做吧.....

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

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

【讨论】:

【参考方案4】:

如果两个表具有相同的架构,则使用此查询: insert into database_name.table_name select * from new_database_name.new_table_name where='condition'

将 database_name 替换为您的第一个数据库的名称,将 table_name 替换为您要从中复制的表的名称 还将 new_database_name 替换为您要复制的其他数据库的名称,new_table_name 是表的名称。

【讨论】:

【参考方案5】:
    --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】:

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

1 创建链接服务器 如果需要 (SQL server 2008 R2 - 2012) http://technet.microsoft.com/en-us/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

【讨论】:

【参考方案7】:

这里有一个快速简单的方法:

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

【讨论】:

【参考方案8】:

你可以试试

Insert into your_table_in_db1 select * from your_table_in_db2@db2SID 

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

【讨论】:

【参考方案9】:
INSERT
INTO    remotedblink.remotedatabase.remoteschema.remotetable
SELECT  *
FROM    mytable

关系数据库中没有“表尾”这样的东西。

【讨论】:

这不是一个好的选择,因为它比插入到本地数据库中的数据要从远程数据库中获取要慢得多。【参考方案10】:

这个怎么样:

USE TargetDatabase
GO

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

【讨论】:

10 年后......仍然非常感谢。 第一个 dbo 代表 TargetDatabase

以上是关于如何将表值从一个数据库插入到另一个数据库? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何从.net代码将表值参数传递给存储过程

如何将表的记录从数据库检索到另一个数据库

如何使用 C# 和 SQL 将表值参数传递给用户定义的数据表

将表值参数传递给存储过程

在android中将值从一个窗口传递到另一个窗口

使用 PetaPoco 将表值参数传递给存储过程