2013-12-11 2 views
0

이 질문은 이전에 물어 보았지만 실제로 읽은 것이 없습니다.동일한 데이터베이스의 한 테이블에서 다른 테이블로 데이터 이동

나는 하루에 여러 쿼리에서 사용되는 수백만 행의 데이터가있는 테이블을 가지고 있습니다. 같은 스키마를 사용하여 대다수의 데이터를 다른 테이블로 옮기고 싶습니다. 두 번째 테이블은 "아카이브"테이블이됩니다.

데이터 보관을위한 옵션 목록이 필요하므로 상사에게 제공 할 수 있습니다. 지금까지 C# 콘솔 응용 프로그램에서 select 문, SQLBulkCopy에 대한 삽입을 고려 중이며 SSI에서 수행 할 수있는 작업을 확인하려고합니다. 주말이나 주말에이 일을 할 계획입니다.

  • 이 표는 몇 외래 키 제약 어떤 도움

감사가 기본 키

  • 표와 같은 ID가 있습니다.

  • +0

    외래 키 제약 조건을 언급합니다. 최종적으로 원래 테이블에서 아카이브 된 데이터를 삭제해야한다는 기대가 있습니까? – Ellesedil

    +0

    예 새 테이블에서 원래 테이블의 데이터를 삭제합니다. 하지만 여전히 보관 된 데이터에 액세스해야합니다. – grath

    답변

    0

    SQL Server 용이라고 가정합니다. 이 경우 partitioned tables이 추가 옵션 일 수 있습니다. 그렇지 않으면 항상 INSERT ... SELECT을 SQL Server의 작업으로 실행하거나 SQL Server에서 직접 실행할 수없는 경우 저장 프로 시저를 만들고 일정을 세우는 작은 C# 도구를 통해 실행합니다.

    +0

    예 SQL Server 2012를 사용하고 있습니다. 분할 된 테이블을 살펴 보겠습니다. 감사합니다 – grath

    0

    데이터가 대부분의 데이터베이스 엔진에 하나의 명령으로 복사와 함께 당신은 새 테이블을 만들 수

    CREATE TABLE mynewtable as select * from myoldtable where any_filter..; 
    

    같은 것을 실행하십시오.

    사용이가, SQL 서버 사용자가 설정 데이터 아카이브 간격이 경우 2008

    Select * into new_table from old_table 
    
    +0

    첫 번째 것은 단발적인 것입니다, 맞습니까? 그것은 스냅 샷을 만들 것입니다. 매번 새로운 테이블을 만들고 싶지 않다면 두 번째 테이블이 더 나을 것입니다. –

    +0

    맞습니다. 데이터 사본이됩니다. – Shooorf

    +0

    select 문에 삽입 한 경우 한 번에 모든 데이터를 시도하는 대신 데이터를 일괄 적으로 처리하는 것이 좋을까요? – grath

    관련 문제