Posted
Filed under 공부한 것들/기타

가장 많이 쓰는 한 줄 (그대로 붙여넣기)

robocopy "C:\원본\폴더" "E:\외장SSD\대상\폴더" /E /MT:10 /COPY:DAT /DCOPY:T
  • /E : 하위 폴더 전부 + 빈 폴더까지 복사
  • /MT:10 : 10개 스레드로 동시에 복사(멀티스레드)
  • /COPY:DAT : 데이터/속성/시간만 복사(권한은 제외)
  • /DCOPY:T : 폴더의 시간 정보도 유지
추천 값
• HDD → 외장 SSD : /MT:8~12
• SSD ↔ SSD : /MT:16~32 (상황 봐서 올리기)

자주 쓰는 상황별 예시

1) HDD → 외장 SSD (안정적·빠르게)

robocopy "C:\원본" "E:\대상" /E /MT:10 /R:2 /W:2 /COPY:DAT /DCOPY:T

/R:2 /W:2 : 실패 시 2회 재시도, 2초 간격

2) SSD ↔ SSD “동기화”(소스와 똑같이 맞추기)

robocopy "D:\SRC" "G:\DST" /MIR /MT:32 /R:2 /W:2 /COPY:DAT /DCOPY:T
주의 /MIR는 대상에서 소스에 없는 파일을 삭제합니다. 먼저 드라이런으로 점검하세요.
robocopy "D:\SRC" "G:\DST" /MIR /L /NP

3) 변경된 것만 빠르게(증분 느낌)

robocopy "C:\SRC" "E:\DST" /E /MT:16 /XO /XN /XC /R:2 /W:2 /COPY:DAT /DCOPY:T

4) 네트워크 드라이브(중간에 끊겨도 이어받기)

robocopy "\\SERVER\share\SRC" "E:\DST" /E /Z /MT:16 /R:3 /W:5 /COPY:DAT /DCOPY:T

/Z : 재시작 가능한 모드(네트워크 불안정 시 유용)

숨김/시스템 파일도 복사되나요?

네, 기본적으로 전부 복사됩니다(별도로 빼라는 옵션을 주지 않으면).

대상에서 숨김/시스템 속성을 지우고 싶다면:

robocopy "C:\SRC" "E:\DST" /E /MT:10 /COPY:DAT /DCOPY:T /A-:SH

/A-:SH : 복사된 파일·폴더의 숨김(H)/시스템(S) 속성 제거

링크/정션으로 무한 루프가 걱정되면 /XJ(정션 제외) 옵션을 고려하세요.

로그 파일 없이, 화면도 조용하게

로그를 남기지 않으려면 /LOG 옵션을 쓰지 않으면 됩니다. 출력도 최소화하려면:

robocopy "C:\SRC" "E:\DST" /E /MT:10 /R:2 /W:2 /COPY:DAT /DCOPY:T /NP /NFL /NDL

완전 무소음은 끝에 >nul (또는 >nul 2>&1) 추가

어디에서 실행하나요?

  • CMD(관리자) : 시작 메뉴에서 “명령 프롬프트” → 우클릭 → 관리자 권한으로 실행
  • Windows 터미널(관리자) 도 동일하게 사용 가능
  • 명령어는 CMD/PowerShell 둘 다 똑같이 됩니다

마지막 체크리스트

  • 대량 삭제 위험이 있는 /MIR는 꼭 /L 로 미리 점검
  • 경로가 너무 길면 \\?\C:\... 형태 고려
  • 외장 SSD가 exFAT이면 권한 정보가 안 맞을 수 있으니 /COPY:DAT 권장
  • 최적 속도는 PC마다 다릅니다. /MT 값을 8, 12, 16…으로 바꿔 짧게 테스트

 

2025/08/09 13:28 2025/08/09 13:28
Posted
Filed under DataBase/Oracle
Oracle SQL에서 WHERE 절에 조건을 걸 때, NULL 값이 포함된 컬럼은 왜 조회되지 않을까요? 특히 =나 LIKE 조건을 사용하면 NULL인 행이 결과에서 빠지는 이유와 이를 처리하는 방법을 정리했습니다.

1. NULL은 비교 연산에서 항상 FALSE 또는 UNKNOWN

SQL에서 NULL은 "값이 없음"을 뜻합니다.
그래서 다음 조건들은 모두 FALSE 또는 UNKNOWN으로 처리됩니다.
 
 - 컬럼 = NULL → 항상 FALSE (실제로는 UNKNOWN)
 - 컬럼 LIKE '%' → 컬럼이 NULL이면 결과는 UNKNOWN
 
따라서 WHERE 컬럼 = 'abc' 조건은 컬럼이 NULL인 행을 전혀 포함하지 않습니다.
2. NULL 값을 정확히 조회하려면 IS NULL 사용
NULL을 직접 조회할 때는 반드시 IS NULL 조건을 사용해야 합니다.

 SELECT * FROM 테이블명 WHERE 컬럼 IS NULL;
 
컬럼 = NULL은 절대 쓰면 안 됩니다.

3. NULL 포함 조회 방법
예를 들어, 컬럼이 'abc'이거나 NULL인 행 모두 조회하려면:
SELECT * FROM 테이블명 WHERE 컬럼 = 'abc' OR 컬럼 IS NULL;
 
마찬가지로, LIKE 조건과 NULL 포함 조회는 이렇게 씁니다:
SELECT * FROM 테이블명 WHERE 컬럼 LIKE '%패턴%' OR 컬럼 IS NULL;


4. NVL 함수를 활용한 NULL 처리
NVL 함수는 NULL 값을 다른 값으로 대체합니다. 예를 들어:
WHERE NVL(컬럼, '대체값') LIKE '%패턴%'
 
이때 주의할 점은 NVL(컬럼, '%') LIKE '%' 처럼 사용하면 NULL도 포함되지만, 조건 자체가 항상 참이 되어 버려 실질적인 필터링 의미가 없어집니다.

정리
 - NULL은 비교 연산자(=, LIKE 등)에서 항상 제외된다.
 - NULL을 조회하려면 IS NULL을 꼭 써야 한다.
 - NULL 포함 조건은 OR 컬럼 IS NULL을 추가하거나 NVL로 처리 가능하나, 무조건 참이 되지 않도록 주의해야 한다.
2025/07/27 15:45 2025/07/27 15:45