Open Source RDBMS - Seamless, Scalable, Stable and Free

한국어 | Login |Register

Versions available for this page: CUBRID 8.2.1 |  CUBRID 8.3.0 |  CUBRID 8.3.1 |  CUBRID 8.4.0 |  CUBRID 8.4.1 |  CUBRID 8.4.3 |  CUBRID 9.0.0 | 



데이터베이스 가져오기(load)

설명

데이터베이스 로드는 다음과 같은 경우에 cubrid loaddb 유틸리티를 이용하여 수행된다.

  • 이전 버전의 CUBRID 데이터베이스를 새로운 버전의 데이터베이스로 마이그레이션하는 경우
  • 타 DBMS의 데이터베이스를 CUBRID 데이터베이스로 마이그레이션하는 경우
  • INSERT 구문 실행보다 빠른 성능으로 대용량 데이터를 입력하는 경우

일반적으로 cubrid loaddb 유틸리티는 cubrid unloaddb 유틸리티가 생성한 파일(스키마 정의 파일, 객체 입력 파일, 인덱스 정의 파일)을 사용한다.

구문

cubrid loaddb [ options ] database_name
[ options
-u | -p | -l | -v | -c | -s | -i | -d |
--user | --password | --load-only | --verbose | --periodic-commit--schema-file | --index-file | --data-file | --data-file-check-only | --estimated-size | --no-oid | --no-statistics | --ignore-class-file | --error-control-file | --no-logging

  • cubrid : CUBRID 서비스 및 데이터베이스 관리를 위한 통합 유틸리티이다.
  • loaddb : 언로드 작업에 의해 생성된 파일을 로드하여 새로운 데이터베이스를 생성하는 유틸리티로 사용자가 작성한 별도의 입력 파일을 로드하여 대용량 데이터를 데이터베이스에 보다 신속하게 입력하는 목적으로도 이용된다. 데이터베이스 로드 작업은 독립 모드에서 DBA 권한으로 수행된다.
  • options : 단축 옵션은 -와 함께 사용하고, 전체 옵션은 --와 함께 사용해야 한다. 대소문자는 구별해서 사용해야 한다.
  • database_name : 새로 생성될 데이터베이스의 이름을 지정한다.
리턴 값

cubrid loaddb 유틸리티의 리턴 값은 다음과 같다.

  • 0 : 성공
  • Non-zero : 실패
입력 파일
  • 스키마 파일(database-name_schema): 언로드 작업에 의해 생성된 파일로서, 데이터베이스에 정의된 스키마 정보를 포함하는 파일이다.
  • 객체 파일(database-name_objects) : 언로드 작업에 의해 생성된 파일로서, 데이터베이스에 포함된 레코드 정보를 포함하는 파일이다.
  • 인덱스 파일(database-name_indexes) : 언로드 작업에 의해 생성된 파일로서, 데이터베이스에 정의된 인덱스 정보를 포함하는 파일이다.
  • 트리거 파일(database-name_trigger) : 언로드 작업에 의해 생성된 파일로서, 데이터베이스에 정의된 트리거 정보를 포함하는 파일이다.
  • 사용자 정의 객체 파일(user_defined_object_file) : 대용량 데이터 입력을 위해 사용자가 테이블 형식으로 작성한 입력 파일이다(가져오기용 파일 작성 방법 참고).
옵션

다음은 cubrid loaddb 유틸리티와 결합할 수 있는 옵션을 정리한 표이다. 대소문자를 구별해서 사용해야 한다.

옵션

설명

-u
--user

데이터베이스 사용자의 계정을 입력한다. 기본값은 PUBLIC이다.

-p
--password

데이터베이스 사용자의 암호를 입력한다.

-l
--load-only

객체 파일에 포함된 구문과 데이터 타입 검사를 생략하고 레코드를 로드한다.

-v
--verbose

데이터 로딩 상태에 관한 상세 정보를 화면에 출력한다.

-c
--periodic-commit

지정된 개수의 레코드가 입력될 때마다 트랜잭션을 커밋한다.

-s
--schema-file

언로드 작업에 의해 생성된 스키마 파일을 지정하여, 스키마 로딩을 수행한다.

-i
--index-file

언로드 작업에 의해 생성된 인덱스 파일을 지정하여, 인덱스 로딩을 수행한다.

-d
--data-file

언로드 작업에 의해 생성된 데이터 파일을 지정하여, 레코드 로딩을 수행한다.

--data-file-check-only

데이터 파일에 포함된 구문과 데이터 타입 검사만 수행하고, 레코드 로딩은 수행하지 않는다.

--estimated-size

예상되는 레코드 수를 지정한다.

--no-oid

데이터 파일에 포함된 OID 참조 관계를 무시하고 레코드를 로딩한다.

--no-statistics

데이터베이스에 관한 통계 정보를 갱신하지 않는다.

--ignore-class-file

지정된 파일에 포함된 클래스를 제외하고 로딩 작업을 수행한다.

--error-control-file

데이터 로딩 중에 발생하는 특정 에러의 처리 방식을 명세한 파일을 지정한다.

--no-logging

loaddb 수행 도중 트랜잭션 로그를 저장하지 않아 데이터를 빠르게 로드할 수 있으나, 오류가 발생해도 데이터를 복구할 수 없다. 주의 사항을 반드시 참고한다.

사용자 계정 입력(-u 또는 --user)

-u는 레코드를 로딩할 데이터베이스의 사용자 계정을 지정하는 옵션이다. 옵션을 지정하지 않으면 기본값은 PUBLIC이 된다.

cubrid loaddb -u admin -d demodb_objects newdb

암호 입력(-p 또는 --password)

-p는 레코드를 로딩할 데이터베이스의 사용자 암호를 지정하는 옵션이다. 옵션을 지정하지 않으면 암호 입력을 요청하는 프롬프트가 출력된다.

cubrid loaddb -p admin -d demodb_objects newdb

구문을 확인하지 않고 레코드 로딩(-l 또는 --load-only)

-l은 로딩할 데이터의 구문을 확인하지 않고 곧바로 데이터를 로딩하는 옵션이다. 다음은 demodb_objects에 포함된 데이터를 newdb로 로딩하는 구문이다.

-l 옵션을 사용하면 demodb_objects에 포함된 데이터의 구문을 확인하지 않고 곧바로 데이터를 로딩하기 때문에 속도는 빠르지만, 오류가 발생할 수도 있다.

cubrid loaddb -l -d demodb_objects newdb

로딩 상태 정보 출력(-v 또는 --verbose)

데이터베이스 로딩 작업이 진행되는 동안, 로딩되는 데이터베이스의 테이블 및 레코드에 관한 상세 정보를 화면에 출력하는 구문이다. -v 옵션을 이용하여 진행되는 단계, 로딩되는 클래스, 입력된 레코드의 개수와 같은 상세 정보를 확인할 수 있다.

cubrid loaddb -v -d demodb_objects newdb

커밋 주기 설정(-c 또는 --periodic-commit)

-c 옵션을 이용하여 100개의 레코드가 newdb로 입력될 때마다 커밋을 주기적으로 실행하는 명령이다. 만약, -c 옵션을 지정하지 않으면 demodb_objects에 포함된 모든 레코드가 newdb로 로딩된 후에 트랜잭션이 커밋된다. 또한, -c 옵션이 -s 옵션이나 -i 옵션과 함께 사용하는 경우에는 100개의 DDL문이 로딩될 때마다 커밋을 주기적으로 실행한다.

권장되는 커밋 주기는 로딩되는 데이터에 따라 다른데, 스키마 로딩의 경우에는 -c의 인수를 50으로 설정하고, 레코드로딩의 경우에는 1,000으로 설정하며, 인덱스 로딩의 경우에는 1로 설정하는 것이 바람직하다.

cubrid loaddb -c 100 -d demodb_objects newdb

스키마 로딩(-s 또는 --schema-file)

demodb에 정의된 스키마 정보를 새로 생성한 newdb에 로딩하는 구문이다. demodb_schema 파일은 언로드 작업에 의해 생성된 파일이며, 언로드된 데이터베이스의 스키마 정보를 포함한다. -s 옵션을 이용하여 스키마 정보를 먼저 로딩한 후, 실제 레코드를 로딩할 수 있다.

cubrid loaddb -u dba -s demodb_schema newdb

Start schema loading.
Total       86 statements executed.
Schema loading from demodb_schema finished.
Statistics for Catalog classes have been updated.

demodb에 정의된 트리거 정보를 새로 생성한 newdb에 로딩하는 구문이다. demodb_trigger 파일은 언로드 작업에 의해 생성된 파일이며, 언로드된 데이터베이스의 트리거 정보를 포함한다. 레코드를 모두 로딩한 후, -s 옵션을 이용하여 트리거를 생성할 것을 권장한다.

cubrid loaddb -u dba -s demodb_trigger newdb

인덱스 로딩(-i 또는 --index-file)

demodb에 정의된 인덱스 정보를 새로 생성한 newdb에 로딩하는 명령이다. demo_indexes 파일은 언로드 작업에 의해 생성된 파일이며, 언로드된 데이터베이스의 인덱스 정보를 포함한다. -d 옵션을 이용하여 레코드를 로딩한 후, -i 옵션을 이용하여 인덱스를 생성할 수 있다.

cubrid loaddb -u dba -i demodb_indexes newdb

데이터 로딩(-d 또는 --data-file)

-d 옵션을 이용하여 데이터 파일 또는 사용자 정의 객체 파일을 지정함으로써 레코드 정보를 newdb로 로딩하는 명령이다. demodb_objects 파일은 언로드 작업에 의해 생성된 객체 파일이거나, 사용자가 대량의 데이터 로딩을 위하여 작성한 사용자 정의 객체 파일 중 하나이다.

cubrid loaddb -u dba -d demodb_objects newdb

로딩될 데이터의 구문 체크만 수행(--data-file-check-only)

--data-file-check-only 옵션을 이용하여 demodb_objects에 포함된 데이터의 구문을 확인만 하는 명령이다. 따라서, 위 명령을 수행하여도 newdb에는 레코드가 로딩되지 않는다.

cubrid loaddb --data-file-check-only -d demodb_objects newdb

예상되는 레코드 수(--estimated-size)

--estimated-size 옵션은 언로드할 레코드의 수가 기본값인 5,000개보다 많은 경우 로딩 성능 향상을 위해 사용할 수 있는 옵션이다. 즉, 이 옵션을 통해 레코드 저장을 위한 해시 메모리를 크게 할당함으로써 로드 성능을 향상시킬 수 있다.

cubrid loaddb --estimated-size 8000 -d demodb_objects newdb

참조 관계 무시하고 레코드 로딩(--no-oid)

demodb_objects에 포함된 OID를 무시하고 레코드를 newdb로 로딩하는 명령이다.

cubrid loaddb --no-oid -d demodb_objects newdb

통계 정보를 갱신하지 않고 레코드 로딩(--no-statistics)

demodb_objects를 로딩한 후 newdb의 통계 정보를 갱신하지 않는 명령이다. 특히, 대상 데이터베이스의 데이터 용량에 비해 매우 적은 데이터만 로딩할 경우 이 옵션을 이용하여 로드 성능을 향상시킬 수 있다.

cubrid loaddb --no-statistics -d demodb_objects newdb

제외 대상 클래스 지정(--ignore-class-file)

로딩 작업 중 무시할 클래스 목록을 명세한 파일을 지정하는 옵션이다. 지정된 파일에 포함된 클래스를 제외한 나머지 클래스의 레코드만 로딩된다.

cubrid loaddb --ignore-class-file=skip_class_list -d demodb_objects newdb

에러 정보 파일 지정(--error-control-file)

데이터베이스 로드 작업 중에 발생하는 에러 중 특정 에러를 처리하는 방식에 관해 명세한 파일을 지정하는 옵션이다.

cubrid loaddb --error-control-file=error_test -d demodb_objects newdb

주의 사항

--no-logging 옵션을 사용하면 loaddb를 수행하면서 트랜잭션 로그를 저장하지 않으므로 데이터 파일을 빠르게 로드할 수 있다. 그러나 로드 도중 파일 포맷이 잘못되거나 시스템이 다운되는 등의 문제가 발생했을 때 데이터를 복구할 수 없으므로 데이터베이스를 새로 구축해야 한다. 즉, 데이터를 복구할 필요가 없는 새로운 데이터베이스를 구축하는 경우를 제외하고는 사용하지 않도록 주의한다.