복붙노트

[SQL] 벌크는 SQL Server 2008에서 삭제 (삭제 데이터를 대량 복사 (BCP와 같은이 무엇이든)인가?)

SQL

벌크는 SQL Server 2008에서 삭제 (삭제 데이터를 대량 복사 (BCP와 같은이 무엇이든)인가?)

SQL 서버에있는 대량을위한 솔루션 삭제이 있습니까?

내가 행동에 행을 제한하는 WHERE 사용하려는 때문에 TRUNCATE를 사용할 수 없습니다.

삭제 데이터를 대량 복사 (BCP) 등이 무엇인가?

해결법

  1. ==============================

    1.아니.

    아니.

    당신은 WHERE 절과 DELETE 원하는 :이 표준 SQL이다.

    당신이 할 수있는 것은이 같은 일괄 삭제입니다 :

    SELECT 'Starting' --sets @@ROWCOUNT
    WHILE @@ROWCOUNT <> 0
        DELETE TOP (xxx) MyTable WHERE ...
    

    또는 당신은 행의 매우 높은 비율을 제거하려면 ...

    SELECT col1, col2, ... INTO #Holdingtable
               FROM MyTable WHERE ..opposite condition..
    TRUNCATE TABLE MyTable
    INSERT MyTable (col1, col2, ...)
               SELECT col1, col2, ... FROM #Holdingtable
    
  2. ==============================

    2.당신이 당신의 테이블의 일부를 삭제하고 자르지하려는 경우 몇 가지 작업을 수행 할 수 있습니다.

    당신이 당신의 테이블의 일부를 삭제하고 자르지하려는 경우 몇 가지 작업을 수행 할 수 있습니다.

    당신은 다음과 같이 두 개의 스위치, 새 테이블로 테이블의 일부를 선택할 수 있습니다 :

    SELECT *
    INTO tmp_MyTable
    FROM MyTable
    WHERE Key='Value'
    
    IF @@ROWCOUNT > 0
    BEGIN
        EXEC sp_rename MyTable, old_MyTable, NULL
        EXEC sp_rename tmp_MyTable, MyTable, NULL
        TRUNCATE old_MyTable 
    END
    

    둘째는 파티션을 사용하는 경우, 동일한 파티션 구성표에 동일한 (빈) 테이블을 만들 수 있습니다 .. 테이블이 당신의 보관 / 정화 논리에 따라 분할되는 경우, 당신은 당신의 기본 테이블에서 하나 개의 파티션 블록을 이동할 수 있습니다 다음 새 테이블과는 예를 들어 .. 새 테이블을 절단 :

    ALTER TABLE MyTable
    SWITCH PARTITION 15 TO purge_MyTable PARTITION 2 
    GO; 
    
    TRUNCATE TABLE purge_MyTable 
    

    추신. 파티션은 SQL 2005/08 엔트에서 사용할 수 있습니다.

    도움이 되었기를 바랍니다!

  3. ==============================

    3.Sychare 부식성,

    Sychare 부식성,

    TRUNCATE의 장점은 로그 파일에 모든 단일 삭제를 기록하지 않도록하는 것입니다. TRUNCATE 문은 전체 배치에 대한 (로그) 단일 항목을 생성합니다.

  4. ==============================

    4.그냥 적절한 잠금 장치 확장 문제를 가지고 준비 테이블에서 작업하는 유사한 문제에 달렸다.

    그냥 적절한 잠금 장치 확장 문제를 가지고 준비 테이블에서 작업하는 유사한 문제에 달렸다.

    관련 테이블 만 우리를 위해 한 위치에서 참조되기 때문에, 우리는 단순히 만들어집니다 동적 테이블 이름에 대한 쿼리와 그 참조를 대체 제안 GBN 것과 유사한 "로 선택".

    스테이징 테이블은 코드에서 한 곳에서 참조하고 테이블 생성과 함께 별도의 데이터베이스 호출의 비용이 창고 맥락에서 정당화되기 때문 유지 보수입니다. 당신이 많은 시간을 불과 몇 백 기록이 또는 코드에서 테이블을 참조하는 경우,이 방법이 작동하지 않을 수 있습니다.

  5. ==============================

    5.행 만 달러를 처리 할 때 나는 WHERE 문을 가진 및 SELECT INTO를 복사 테이블을 사용하여 선호, 원래의 테이블을 삭제하고 사본 (원래 이름으로 다시) 이름을 바꿉니다.

    행 만 달러를 처리 할 때 나는 WHERE 문을 가진 및 SELECT INTO를 복사 테이블을 사용하여 선호, 원래의 테이블을 삭제하고 사본 (원래 이름으로 다시) 이름을 바꿉니다.

    비록, 당신은 (FK) 키를 염두에 제약 등 같은 물건이 있어야합니다. 그러나이 방법을 사용하면 로그의 badazz 크기를 방지, 당신은 덩어리에서 삭제 상당한 시간을 소비하지 마십시오.

    / 목수

  6. ==============================

    6.이를 확인

    이를 확인

  7. from https://stackoverflow.com/questions/2126434/bulk-delete-on-sql-server-2008-is-there-anything-like-bulk-copy-bcp-for-delet by cc-by-sa and MIT license