programing

한 데이터베이스의 테이블에서 다른 데이터베이스로 데이터 복사

lastmoon 2023. 8. 10. 19:09
반응형

한 데이터베이스의 테이블에서 다른 데이터베이스로 데이터 복사

기본적으로 SQL Server 2005에는 두 개의 데이터베이스가 있습니다.

한 데이터베이스에서 테이블 데이터를 가져와 다른 데이터베이스의 테이블에 복사하려고 합니다.

시도해 봤습니다.

SELECT * INTO dbo.DB1.TempTable FROM dbo.DB2.TempTable

이거 안 됐어요.

데이터 손실을 방지하기 위해 복원을 사용하고 싶지 않습니다...

아이디어 있어요?

SELECT... INTO가 새 테이블을 만듭니다.INSERT를 사용해야 합니다.또한 데이터베이스와 소유자 이름이 반대로 되어 있습니다.

INSERT INTO DB1.dbo.TempTable
SELECT * FROM DB2.dbo.TempTable

선택 * INTO를 선택하려면 대상 테이블이 존재하지 않아야 합니다.

이거 먹어봐요.

INSERT INTO db1.dbo.TempTable
 (List of columns here)
SELECT (Same list of columns here)
FROM db2.dbo.TempTable

db1.dbo입니다.TempTable 및 db2.dbo.온도 테이블

4부 명명 체계는 다음과 같습니다.

서버 이름.데이터베이스 이름.스키마.물건

"그것은 효과가 없었습니다"라는 것이 무슨 뜻인지 전혀 알지 못하고 말하기 어렵습니다.잘못될 수 있는 것은 매우 많습니다. 이러한 경로 중 하나를 해결할 때 NAT이 제공하는 조언은 솔루션을 찾는 것에서 점점 더 멀어질 수 있습니다. 이는 매우 단순할 수 있습니다.

하지만 여기 제가 찾고 싶은 것이 있습니다.

테이블에 ID 필드가 포함되어 있고 수동으로 제공하는 경우 가져올 테이블에 ID 삽입이 있어야 합니다.또한 ID 삽입은 데이터베이스에서 한 번에 하나의 테이블에 대해서만 사용 가능으로 설정될 수 있으므로 테이블에 대해 사용 가능으로 설정한 후 가져오기가 완료되면 즉시 사용 불가능으로 설정해야 합니다.

또한 모든 필드를 나열해 보십시오.

INSERT INTO db1.user.MyTable (Col1, Col2, Col3)
SELECT Col1, COl2, Col3 FROM db2.user.MyTable

database_name과 같이 이름을 세 부분으로 나눌 수 있습니다.object_name

아래 쿼리는 테이블을 데이터베이스에 만듭니다(제한 없음).

SELECT * 
INTO DestinationDB..MyDestinationTable 
FROM SourceDB..MySourceTable 

또는 다음을 수행할 수 있습니다.

INSERT INTO DestinationDB..MyDestinationTable 
SELECT * FROM SourceDB..MySourceTable

대상 테이블이 존재하고 비어 있는 경우.

삽입하는 것을 잊지 마십시오.SET IDENTITY_INSERT MobileApplication1 ON맨 위로 이동하지 않으면 오류가 발생합니다.SQL Server용입니다.

SET IDENTITY_INSERT MOB.MobileApplication1 ON
INSERT INTO [SERVER1].DB.MOB.MobileApplication1 m
      (m.MobileApplicationDetailId,
       m.MobilePlatformId)
SELECT ma.MobileApplicationId,
       ma.MobilePlatformId 
FROM [SERVER2].DB.MOB.MobileApplication2 ma

저는 이것이 더 좋습니다.

INSERT INTO 'DB_NAME' 
(SELECT * from 'DB_NAME@DB_LINK')
MINUS 
(SELECT * FROM 'DB_NAME');

그 말은 그 안에 포함되지 않은 것을 삽입할 것이라는 것을 의미합니다.DB_NAME하지만 포함된DB_NAME@DB_LINK도움이 되길 바랍니다.

INSERT INTO DB1.dbo.TempTable
SELECT * FROM DB2.dbo.TempTable

이 쿼리를 사용하면 반환됩니다.Primary key error따라서 이동할 열을 선택하는 것이 좋습니다. 예를 들어,

INSERT INTO db1.dbo.TempTable // (List of columns here)
SELECT (Same list of columns here)
FROM db2.dbo.TempTable

사용해 보세요.

INSERT INTO dbo.DB1.TempTable
    (COLUMNS)
    SELECT COLUMNS_IN_SAME_ORDER FROM dbo.DB2.TempTable

이것은 dbo에 있는 항목인 경우에만 실패합니다.DB2.TempTable이 이미 dbo에 있습니다.DB1.TempTable.

성공적으로 작동합니다.

INSERT INTO DestinationDB.dbo.DestinationTable (col1,col1)
 SELECT Src-col1,Src-col2 FROM SourceDB.dbo.SourceTable

일부 열을 추가하더라도 한 테이블을 다른 db 테이블에 복사할 수 있습니다.

insert into [SchoolDb1].[dbo].Student(Col1, Col2,Col3, CreationTime, IsDeleted) 
select Col1, Col2,Col3,,getdate(),0 from [SchoolDb2].[dbo].Student

다음은 추가 열입니다. (작성)시간은 데이터 시간이고 IsDeleted는 부울 시간입니다.)

select * from DBA1.TABLENAMEA;

create table TABLENAMEA as (select * from DBA1.TABLENAMEA);

이러한 수동 방식은 더 많은 유연성을 제공하지만 동시에 크기가 수천 개로 더 작은 테이블에서도 사용할 수 있습니다.

select * from <table name>DB에서 전체 테이블이 표시되면 맨 아래까지 스크롤합니다.

마우스 오른쪽 단추를 클릭하여 수행Export table as Insert statement대상 테이블의 이름을 제공하고 테이블을 .sql 파일로 내보냅니다.

하여 정기적으로 합니다.find and replace더 많은 열 이름을 포함하는 작업 등.

을 합니다.INSERT문이 대상 DB에 있습니다.

언급URL : https://stackoverflow.com/questions/940930/copy-data-from-a-table-in-one-database-to-another-separate-database

반응형