2012-06-14 6 views
1

그래서 데이터베이스 테이블에서 일부 데이터를 다른 복사본으로 복사하려고합니다. 그러나 문제는 대상 데이터베이스 테이블에 2 개의 새로운 열이 필요하다는 것입니다. SQL Server Management Studio에서 내보내기/가져 오기 마법사를 사용하고 싶었지만이를 사용하면 각 테이블에 대한 쿼리를 작성해야하며 한 번에 하나의 쿼리 만 실행할 수 있습니다. 보다 효율적인 방법이 있는지 궁금합니다.테이블 데이터 복사 및 새 열 채우기

여기에 한 테이블의 예 :

dbase1.dbo.Appointment { id, name, description, createdate } 
dbase2.dbo.Appointment { id, name, description, createdate, auditby, auditat} 

나는 그 2 개의 추가 열 여덟 개 테이블의 총이있다. 대부분은 fk를 통해 서로 관련되어 있으므로 어떤 테이블이 먼저 삽입되는지 파악할 때 마법사를 사용하고 싶었습니다. 문제는 "하나 이상의 테이블에서 데이터 복사"가 아니라 "데이터를 지정하는 쿼리 작성"(이 두 개의 새로운 열을 채우는 데 사용)을 수행하는 경우에만 작동합니다.

난 내 응용 프로그램에 MVC 코드 첫째를 사용하고 난 내 여가에서 테이블을 삭제하고 만들 수있는 액세스 권한이없는 것처럼 데이터 복사에 매우 느린 프로세스를 해왔다. 따라서 이미 가지고있는 데이터를 유지하려면이 방법을 사용해야합니다.

+0

새 필드 두 개가 null 값을 허용합니까? 예이면 중첩 된 삽입 쿼리를 시도 할 수 있습니다. 이런 식으로 : INSERT INTO dbase2.dbo.Appointment VALUES (SELECT * FROM dbase1.dbo.Appointment). 이 유형의 쿼리는 나를 위해 여러 번 작동합니다. 희망이 당신을도 도움이됩니다. –

+0

8은별로 많지 않습니다. 8 목록을보고 처리해야 할 순서를 스스로 결정할 수 있습니까? –

+1

@ V.P.Verma 귀하가 귀하의 코멘트에 게시 한 쿼리는 작동하지 않습니다. –

답변

1

아이디어 : 대상 데이터베이스에서 외래 키 제약 조건을 일시적으로 해제하십시오. 그렇다면 인서트를 어떤 순서로 실행해도 상관 없습니다. 두 개의 새로운 필수 열을 채우기 위해서는 몇 개의 주식 값을 선택하기 만하면됩니다. 분명히이 행은 처음에는 초기 감사 대상이 아니기 때문입니다. 예를 들어 :

INSERT dbase2.dbo.appointment 
(id, name, description, createdate, auditby, auditat) 
    SELECT id, name, description, createdate, 
    auditby = 'me', auditat = GETDATE() 
    FROM dbo.appointment; 

그것은 도전 대상이 소스에없는 열을 필요로 단지, 당신이 감사 컬럼에 채워해야하는지 결정해야한다는 것 때문에,이 보인다 한 번에 여러 문제를 해결하십시오. 'me'GETDATE() 대신에 무엇을 넣을 지 알아 내면됩니다.

(마법사가이 8 개의 테이블을 가져 오도록하려면 위 쿼리의 선택 부분과 비슷한보기를 만들 수 있지만 그게 더 효과적이고 기본 FK 제약 조건이 표시되지 않습니다. 어쨌든 올바른 순서로 생성)

+0

실물을 빨리 시험합시다. 그래서 그냥 마법사 대신 쿼리를 작성해야합니다. 이런 일을하는 것은 이번이 처음입니다. 그래서 저와 멍청한 질문을합니다. :) – gdubs

0

각 삽입 프로세스에 대한 sql 쿼리를 원하는 순서대로 작성하십시오. 그것은 가장 간단한 접근 방법입니다.

0

이 두 열

AuditAt에 대한

처럼의 Default values 설정 -. AuditBy를 들어 GetDate() 즉 기본 날짜 - 사람 ID/이름 이제

, 당신은 삽입 할 수 있습니다 이 두 개의 열을 입력하지 않고이 테이블에

+0

'auditby' 열에 외래 키가 있다고 누가 궁금한가요? –

+0

선생님, 감사합니다. 사용자 이름이고 사용자 테이블과의 관계 여야합니다. – Pankaj

+0

글쎄, 그것이 무엇이되어야하는지는 반드시 그것이 무엇인지는 아닙니다. 나는 실제로 내가 질문에서 뭔가를 놓친 지 묻고 있었다. 나는 그 테이블에 외래 키가 필요하다는 것을 OP에게 알리는 것이 당신의 장소라고 생각하지 않습니다. 그는 정말로 가능한 한 모든 Windows 인증 로그인을 테이블에 저장해야합니까? –

관련 문제