한 데이터베이스에서 다른 데이터베이스로 테이블 값을 삽입하는 방법은 무엇입니까? [닫은]


89

대상 테이블이 이미 존재하는 경우 쿼리에서 한 테이블의 레코드를 다른 데이터베이스의 다른 테이블에 삽입하고 싶습니다. 테이블 끝에 레코드를 추가해야합니다.

답변:


156

이건 어때:

USE TargetDatabase
GO

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

3
10 년이 지난 지금도 ...
Chris Catignani

@ChrisCatignani : 감사합니다! 일부 답변은 영원을 위해 만들어집니다 ;-)
marc_s

33

한 서버 / 데이터베이스에서 다른 데이터베이스로 테이블 값을 삽입하는 방법은 무엇입니까?

1 연결된 서버 만들기 {필요한 경우} (SQL 서버 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

관계형 데이터베이스에는 "테이블의 끝"과 같은 것이 없습니다.


0

두 테이블의 스키마가 동일한 경우 다음 쿼리를 사용합니다. 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은 테이블의 이름입니다.


0

그냥 해.....

(동일한 데이터를 가진 테이블과 동일한 테이블 구조를 생성합니다.)

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

0

SQL Server의 경우 다른 데이터베이스에서 데이터 가져 오기 도구를 사용할 수 있습니다. 매핑 열을 구성하는 것이 더 쉽습니다.


0

대부분 마이그레이션 스크립트에서 이러한 유형의 쿼리가 필요합니다.

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

이 쿼리에서 열 개수는 두 테이블에서 동일해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.