2015-02-06 2 views
1

다음 필드가있는 데이터베이스 테이블 (Employee)이 있습니다 : EmpID, EmpName. PKID (자동), EmpID, EmpName, 월, 연도 필드가있는 두 번째 테이블 (EmployeeVersion)이 있습니다.하나의 테이블에서 다른 SQL 서버로 레코드를 복사하는 가장 빠른 방법

Employee 테이블에서 EmployeeVersion 테이블로 데이터를 복사하는 가장 빠른 방법은 무엇입니까? 월, 연도에는 데이터가 복사 된 월 또는 연도 또는 C# 코드에서 저장 프로 시저 (@Month, @Year)로 값이 전송됩니다. 두 가지 시나리오에 대한 솔루션을 제공하십시오.

Insert Into EmployeeVersion (EmpID, EmpName, Month, Year) select * from Employee 

하십시오 조언을 : 열 수는 두 테이블에서 일치하지 않기 때문에

은 지금까지 내가 아는 한, 나는 다음과 같은 성명을 사용하지 않을 수 있습니다. 감사.

+0

특정 열 선택 EMPLOYEE 테이블에서. –

+0

이 두 필드가 Employee 테이블에 없기 때문에 EmployeeVersion 테이블의 Month & Year를 어떻게 채울 수 있습니까? – learner

+0

GORDON의 해결책을 확인하십시오 –

답변

2

당신은 select 문에 열을 지정하고 열 이름 Month, Year[]에 사용 예약어 탈출해야합니다 :

create table . . . 
    CreatedAt datetime not null default getdate() 

는 그 다음 insert의 모습 : 당신은 그것을 정의 할

Insert Into EmployeeVersion (EmpID, EmpName, [Month], [Year]) 
select EmpId, EmpName, MONTH(GETDATE(), YEAR(GETDATE()) from Employee 

및 저장 프로 시저 :

CREATE PROCEDURE [dbo].[CopyEmployee] 
    @Month INT, 
    @Year INT 
AS 
BEGIN 
    SET NOCOUNT ON; 

    Insert Into EmployeeVersion (EmpID, EmpName, [Month], [Year]) 
    select EmpId, EmpName, @Month AS [Month], @Year AS [Year] from Employee; 
END 
GO 
0

당신은 선택의 열을 지정해야합니다

Insert into EmployeeVersion SELECT EmpId, EmpName, MONTH(getdate()), YEAR(getdate()) from Employee 

감사합니다.

3

왜 월과 연도를 별도의 열에 저장 하시겠습니까? 데이터가 삽입 될 때 날짜를 입력하는 것이 가장 좋은 이유는 무엇입니까? 당신이 열을 가질 수

Insert Into EmployeeVersion (EmpID, EmpName, Month, Year) 
    select EmpID, EmpName, month(getdate()), year(getdate()) 
    from Employee; 

참고 자동으로 할당됩니다 CreatedAt을했다.

Insert Into EmployeeVersion (EmpID, EmpName) 
    select EmpID, EmpName 
    from Employee; 
+0

답변을 주셔서 감사합니다. 두 가지 시나리오가 있습니다. 첫 번째 시나리오에서는 자동화 된 날짜를 사용할 수 있지만 현재 날짜가 아닐 수도 있습니다. 그래서 시나리오 2를 어떻게 구현합니까? 매개 변수를 저장 프로 시저에 추가하십시오. 그래서 '@Month', '@Year'를 params로 저장 프로 시저에 전송한다고 가정합니다. insert 문을 어떻게 변경하여 month (getdate()), year (getdate()) 대신 이러한 매개 변수를 수용 할 수 있습니까? 'EmployeeVersion (EmpID, EmpName, Month, Year)에 삽입 Employee' – learner

+0

@learner의 EmpID, EmpName, '@month', '@year' 을 선택하십시오. . . 값을 따옴표로 묶지 않을 것입니다. –

+0

미안 해요 의견 상자에 인용 부호가없는 사용자로 '@Month'를 처리한다고 언급 했으므로 따옴표를 추가했습니다. 당신의 도움을 주셔서 감사합니다. – learner

관련 문제