あるデータベースから別のデータベースにテーブル値を挿入するにはどうすればよいですか?[閉まっている]


91

宛先テーブルがすでに存在する場合、あるテーブルから別のデータベースの別のテーブルにレコードを挿入するクエリが必要です。テーブルの最後にレコードを追加する必要があります。

回答:


160

これはどう:

USE TargetDatabase
GO

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

4
10年後...それでも大いに感謝します。
ChrisCatignani20年

@ChrisCatignani:ありがとう!いくつかの答えは永遠に作られています
;

34

あるサーバー/データベースから別のデータベースにテーブル値を挿入するにはどうすればよいですか?

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

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は、他のDBのsidです。tnsnames.oraファイルに存在します


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

リレーショナルデータベースには「テーブルの終わり」のようなものはありません。


1

ほとんどの場合、移行スクリプトでこのタイプのクエリが必要です

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

このクエリでは、列数は両方のテーブルで同じである必要があります


0

両方のテーブルのスキーマが同じである場合は、次のクエリを使用します。 。insertinto database_name.table_name select * 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

SQL Serverの場合、別のデータベースからデータをインポートするツールを使用できます。マッピング列を構成する方が簡単です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.