-
Oracle은 데이터 가져오기 및 내보내기를 위해 각각 imp.exe 및 exp.exe라는 두 가지 도구를 제공합니다. 이 두 도구는 Oracle_home/bin 디렉토리에 있습니다.
데이터 표현 내보내기
1 사용자 이름 시스템 및 비밀번호 123456을 사용하여 데이터베이스 ATSTestDB를 c:export.dmp로 완전히 내보냅니다.
exp 시스템/123456@ATSTestDB 파일=c:export.dmp 전체=y
그 중 ATSTestDB는 데이터베이스 이름, system은 데이터베이스의 계정, 123456은 비밀번호입니다.
2 데이터베이스에 있는 시스템 사용자 및 sys 사용자의 모든 관련 리소스(테이블, 저장 프로시저, 메서드, 뷰 등)를 내보냅니다.
exp 시스템/123456@ATSTestDB 파일= c:export.dmp 소유자=(시스템,sys)
3 데이터베이스의 sys.table1 및 owbsys.table2 테이블을 내보냅니다.
exp 시스템/123456@ATSTestDB 파일= c:export.dmp 테이블=(sys.table1, owbsys.table2)
테이블의 스키마 이름을 추가해야 합니다. 그렇지 않으면 현재 연결된 사용자의 테이블이 기본값이 됩니다. 물론 연결하는 계정에는 해당 테이블에 대한 권한이 있어야 합니다.
4 데이터베이스의 table1에서 필드 제목이 "GangGe"로 시작하는 데이터를 내보냅니다.
exp system/123456@ATSTestDB 파일= c:export.dmp tables=(table1) query=" 여기서 제목은 'GangGe%'"
슬래시 "" 뒤에 콜론이 오면 문자 콜론 " " "을 이스케이프하는 데 사용됩니다. 왜냐하면 그 뒤에 조건부 쿼리 문이 오기 때문입니다. 하나의 쿼리 매개변수만 지정할 수 있습니다. 쿼리가 여러 테이블에 대한 것인 경우에도 마찬가지로 , 테이블은 하나일 수도 있고 여러 개일 수도 있으며, 쿼리의 조건은 이러한 테이블에서 실행될 수 있습니다. 그렇지 않으면 exp 문을 몇 개 더 작성해야 합니다.
내보낸 후에는 데이터가 상대적으로 크다는 것을 알 수 있습니다. winzip, winrar, 7zip 및 기타 타사 도구와 같은 일부 압축 도구를 사용하여 데이터를 다시 압축할 수 있습니다. 마찬가지로 exp는 사용자가 데이터를 직접 압축할 수 있는 매개변수(compress = y)를 지원합니다. 이 매개변수는 내보내는 동안 데이터를 압축하기 위해 명령 끝에 직접 추가할 수 있습니다.
데이터임프 가져오기
데이터를 추출하는 방법을 알고 있으므로 복원할 때 imp 명령을 사용하여 내보낸 데이터를 로드해야 합니다.
1 c:export.dmp 데이터를 ATSTestDB에 로드합니다.
imp 시스템/123456@ATSTestDB 파일=c:export.dmp
알겠습니다. 데이터를 가져올 때 오류가 보고될 수 있습니다. 왜? 두 가지 주요 이유가 있습니다:
A. 가져온 개체(테이블, 뷰, 메서드 등)는 원래 현재 연결된 사용자에게 속하지 않습니다.
B. 가져온 개체가 데이터베이스의 지정된 사용자 아래에 이미 존재합니다.
C. 가져온 개체의 원래 사용자는 더 이상 이 데이터베이스에 없습니다.
모든 개체를 지정된 계정으로 가져옵니다.
Imp 시스템/123456@ATSTestDB 파일=c:export.dmp fromuser=sys touser=system
그중 fromuser=sys는 .dmp 파일에 있는 개체의 원래 소유자이고 touser=system은 가져온 개체의 새 소유자입니다.
데이터 무시/삽입
Imp 시스템/123456@ATSTestDB 파일=c:export.dmp 무시=y
그 중,ignore=y는 imp.exe에게 해당 객체에 직접 데이터를 삽입하라고 지시합니다(그리고 가져온 객체에 제약 조건, 인덱스 등 다른 객체가 있는 경우 데이터가 삽입된 후에 생성됩니다).
2 지정된 테이블 table1, table2를 로드합니다.
imp 시스템/123456@ATSTestDB 파일=C:export.dmp 테이블=(table1,table2)
3 로딩 제약 무시
때로는 데이터를 가져올 때 일부 외래 키 제약 조건 등과 같은 제약 조건을 가져올 필요가 없으며 매개변수 제약 조건=N을 추가할 수 있습니다.
imp system/123456@ATSTestDB 파일=C:export.dmp 테이블=(table1,table2) 제약 조건=N
4 인덱스(예: 고유 인덱스)를 로드하지 마십시오.
imp 시스템/123456@ATSTestDB 파일=C:export.dmp 테이블=(테이블1,테이블2) 인덱스=N
5 데이터가 아닌 구조만 로드
테이블의 구조(제약조건, 트리거)만 정의하고 내부에 데이터가 필요하지 않은 경우에는 행=N 매개변수를 추가할 수 있습니다.
imp 시스템/123456@ATSTestDB 파일=C:export.dmp 테이블=(table1,table2) 행=N
위 작업의 경우 로그인 작업의 대상 시스템은 관리자가 아니고 일반 사용자인 경우 이 사용자는 개체를 생성하고 삭제할 수 있는 권한이 있어야 합니다. 개체에는 테이블과 같은 일반 개체가 포함될 수 있습니다. , 뷰, 메서드, 저장 프로시저 등 왜 "아마도"가 포함되나요? 이는 가져오고 내보낼 때 관련 유형의 객체가 관련되는지 여부에 따라 달라지기 때문입니다.
이제 위의 간단한 Oracle 데이터 가져오기 및 내보내기 명령을 마스터하셨나요? 나는 그것으로 충분하다고 믿습니다.