dbsql 명령

dbsql 명령은 Db2® SQL 명령 인터프리터를 호출합니다.

IBM® Db2 Warehouse on Cloud 지원 도구를 설치한 원격 시스템에서 명령을 실행할 수 있습니다. 데이터베이스 사용자 계정 권한을 기반으로 SQL 명령 인터프리터를 사용하여 쿼리를 실행하고 오브젝트 작성 및 삭제, 데이터베이스 관리 등의 관리 조치를 수행할 수 있습니다.

기본 명령 구문은 다음과 같습니다.
dbsql [options] [security options]
IBM Db2 Warehouse를 사용 중인 경우, 명령을 실행하는 방법은 Db2 지원 도구를 가져온 위치에 따라 다릅니다. 명령 실행 방법에 대한 정보는 Db2 지원 도구 개요의 내용을 참조하십시오.
참고: IBM Db2 Warehouse의 경우, dbsql을 사용자 root로 실행할 때나 docker exec -it Db2wh dbsql을 사용하여 다음 예에 표시된 대로 컨테이너 파일 시스템에서 절대 파일 경로를 제공해야 합니다.
dbsql -f /mnt/clusterfs/scratch/query.sql 
docker exec ... 명령에서 직접 쿼리를 호출할 경우, 다음 규칙이 적용됩니다.
  • 다음 예에서와 같이 작은따옴표를 사용하여 쿼리를 묶으려면 큰따옴표를 이스케이프하십시오.
    docker exec -it Db2wh dbsql ... -c '"SELECT * FROM test_table"'
    참고: 제품 컨테이너를 사용 중인 경우에만 이 제한사항이 적용됩니다. 클라이언트 컨테이너에서는 작은따옴표 마크를 사용하여 쿼리를 묶을 필요가 없습니다.
  • 쿼리에 작은따옴표와 큰따옴표가 혼용되어 있는 경우, 다음 예와 같이 큰 따옴표를 백슬래시(\)로 이스케이프하십시오.
    docker exec -it Db2wh dbsql ... -c '"CREATE' SCHEMA '\"MixedCase'\''WithQuotes\""'
  • 쿼리에 보존해야 하는 작은따옴표가 포함된 경우, 다음 예에서와 같이 쿼리를 큰따옴표로 묶으십시오.
    docker exec -it Db2wh dbsql ... -c "\"INSERT INTO dbsql_tbl VALUES(1, 'aaaaa');\""
    또한 두 번째 글머리 기호에서 설명한 것처럼 큰따옴표 마크를 이스케이프해야 합니다.
다음 테이블에서는 dbsql 명령 옵션을 설명합니다.
표 1. dbsql 명령 옵션
옵션 설명
-a 스크립트의 모든 입력을 에코합니다.
-A 정렬되지 않은 테이블 출력 모드를 사용합니다. 이는 -P format=unaligned를 지정하는 것과 동일합니다.
-c <query> 단일 쿼리(또는 슬래시 명령)만 실행한 후 종료합니다. 명령행에서 직접 쿼리를 호출할 경우, 쿼리를 큰따옴표로 묶어야 합니다.
-d <dbname>
or
-D <dbname>
연결할 데이터베이스의 이름을 지정합니다. 이 매개변수를 지정하지 않는 경우 dbsql 명령은 데이터베이스를 지정하도록 프롬프트됩니다. 기본 데이터베이스 이름은 $DB_DATABASE입니다.
-schema <schemaname> 연결할 스키마의 이름을 지정합니다. 이 매개변수를 지정하지 않는 경우 dbsql 명령은 기본 스키마를 사용하며, 이는 데이터베이스 사용자 이름과 일치하는 스키마입니다. 기본 스키마 이름은 $DB_SCHEMA입니다.
-e 서버에 전송되는 쿼리를 에코합니다.
-E 내부 명령이 생성하는 쿼리를 표시합니다.
-f <file name> 지정된 파일에서 쿼리를 실행한 후 종료하십시오.
Db2 Warehouse의 경우, 컨테이너 내에서 액세스할 수 있는 절대 경로를 지정해야 합니다. 예는 다음과 같습니다.
dbsql -f /mnt/clusterfs/scratch/query.sql 
-F <string> 필드 구분자를 설정합니다. 기본값은 수직바(|)입니다. 이는 -P fieldsep=<string>을 지정하는 것과 동일합니다.

2진, 제어 또는 인쇄할 수 없는 문자의 경우, 달러 기호($) 문자를 값의 접두부로 놓습니다. 예를 들어 탭 값으로 dbsql -F $'\t'를 지정하십시오.

-h(또는 -? 또는 --help) dbsql 명령에 대한 도움말을 표시합니다.
-host <host> 또는 -h <host> 데이터베이스 서버의 호스트 이름을 지정합니다. 기본값은 도메인 소켓입니다.
-H 테이블 출력 모드를 HTML로 설정합니다. 이는 -P format=html을 지정하는 것과 동일합니다.
-l 사용 가능한 데이터베이스를 나열한 후 종료합니다.
-n 리드행을 사용 안함으로 설정합니다. 일본어, 중국어, 한국어 등 입력 메소드와 함께 dbsql을 사용할 경우 필요합니다.
-o <filename> 쿼리 출력을 지정된 파일에 전송합니다(파일 이름 대신 수직바(|)가 지정된 경우에는 파이프에 전송).
-O <filename> 쿼리 출력 및 오류 메시지를 지정된 파일에 전송합니다(파일 이름 대신 수직바(|)가 지정된 경우에는 파이프에 전송).
-port | -p <port> 데이터베이스 서버 포트를 지정합니다. SSL이 구성된 포트일 수 없습니다. 기본값은 하드와이어입니다.
-P var[=arg] var로 표시된 인쇄 옵션을 arg로 표시된 값으로 설정하십시오. var 옵션에는 다음이 포함됩니다.
fieldsep=string
필드 구분자를 설정합니다. 기본값은 수직바(|)입니다.
recordsep=string
레코드 구분자를 설정합니다. 기본값은 개행 문자입니다.
border=value
HTML 테이블 경계 크기를 설정합니다.
expanded
테이블 출력을 펼칩니다.
tuples_only
행만 인쇄합니다.
title=string
HTML 테이블 제목을 설정합니다.
tableattr=text
HTML 테이블 태그 옵션(예: 너비 및 테두리)을 설정합니다.
null=string
지정된 문자열을 널(NULL) 값으로 표시합니다.
format=format
비정렬 테이블 출력 모드를 사용하려면 unaligned를, HTML 테이블 출력 모드를 사용하려면 html을, LaTeX 형식을 사용하려면 latex를 지정하십시오.
-pw <password> 데이터베이스 사용자의 비밀번호를 지정합니다. 이 매개변수를 지정하지 않는 경우 dbsql 명령은 비밀번호를 입력하도록 프롬프트됩니다.
-q 메시지를 발행하지 않고 자동으로 실행합니다. 쿼리 출력만 리턴됩니다.
-r 쿼리 출력 끝에 기본적으로 표시되는 행 계수를 제외합니다.
-R <string> 레코드 구분자를 설정합니다. 기본값은 개행 문자입니다. 이는 -P recordsep=<string>을 지정하는 것과 동일합니다.
-rev 또는 -Rev 소프트웨어 버전 정보를 표시하고 종료합니다.
-s 각각의 쿼리를 확인해야 하는 단일 단계 모드를 사용합니다.
-S 개행 문자로 쿼리를 종료하는 단일 행 모드를 사용합니다.
-t 행만 인쇄합니다. 이는 -P tuples_only를 지정하는 것과 동일합니다.
-terminator <char> SQL 쿼리 종단자를 지정된 문자로 설정합니다. 기본값은 ';'입니다.
-time 쿼리를 완료할 때까지의 경과 시간을 인쇄합니다.
-T <text> HTML 테이블 태그 옵션(예: 너비 및 테두리)을 설정합니다. 이는 -P tableattr=<text>를 지정하는 것과 동일합니다.
-u <username>
or
-U <username>
데이터베이스 사용자를 지정합니다. 이 매개변수를 지정하지 않을 경우 dbsql 명령은 사용자 이름을 입력하도록 프롬프트를 표시합니다. 기본 사용자 이름은 $DB_USER입니다.
참고: Db2 Warehouse의 경우 dbsqlroot 사용자로 실행하거나 docker exec -it Db2wh dbsql을 사용할 때는 사용자 이름 매개변수가 대소문자를 구분합니다.
-v <name>=<value> 지정된 dbsql 세션 변수를 지정된 값으로 설정하십시오. 설정할 각각의 변수에 대해 이 매개변수를 한 번 지정하십시오. 예를 들면 다음과 같습니다.
dbsql -v HISTSIZE=600 -v USER=user1 -v PASSWORD=password
-V 버전 정보를 표시한 후 종료합니다.
-w 데이터베이스 사용자의 비밀번호를 요구하지 않습니다. 비밀번호는 다른 메커니즘(예: Kerberos)에서 제공됩니다.
-W <password> 또는 -pw <password> 데이터베이스 사용자의 비밀번호를 지정합니다.
-x 확장된 테이블 출력을 사용합니다. 이는 -P expanded를 지정하는 것과 동일합니다.
-X 시작 파일( ~/.dbsqlrc)를 읽지 않습니다.
-securityLevel <level> Db2 환경의 경우 이 옵션이 지원되지 않습니다.
-caCertFile <path> Db2 환경의 경우 이 옵션이 지원되지 않습니다.
다음 예는 dbsql 명령 인터프리터를 여는 명령을 표시합니다.
dbsql -d bludb -schema ap_region -u admin1 -pw mypassword 
Welcome to dbsql, an interactive SQL terminal.

Type:  \? for help on internal slash commands
       \g or terminate with semicolon to execute query
       \q to quit 
BLUDB.AP_REGION(ADMIN1)=>
Db2 Warehouse를 통해 루트 사용자는 또한 이미지 컨테이너 호스트의 명령행에서 다음 등가의 명령을 발행할 수 있습니다.
docker exec -it Db2wh dbsql -d bludb -schema ap_region -u admin1 -pw mypassword 
Welcome to dbsql, an interactive SQL terminal.

Type:  \? for help on internal slash commands
       \g or terminate with semicolon to execute query
       \q to quit 
BLUDB.AP_REGION(ADMIN1)=>

dbsql 대화식 명령 터미널 내에는 다양한 태스크를 수행하기 위해 지정할 수 있는 내부 명령이 있습니다. 각 옵션 앞에 백슬래시(\)가 있으므로 이 옵션을 슬래시 옵션이라고 합니다. 슬래시 명령에 대한 자세한 정보는 dbsql 내부 슬래시 명령의 내용을 참조하십시오.