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

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

【问题讨论】:

    标签: sql sql-server-2005 integration append


    【解决方案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
                    猜你喜欢
                    • 2015-03-31
                    • 1970-01-01
                    • 2014-11-21
                    • 1970-01-01
                    • 2023-04-10
                    • 2015-02-04
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多