sftp

SSH 프로파일을 사용하여 원격 SFTP 서버의 파일 목록을 조회하거나, 파일 내용을 읽거나, 쿼리 결과를 파일로 업로드합니다.

명령어 속성

항목설명
명령어 유형드라이버 쿼리 또는 가공 쿼리
필요 권한SSH 프로파일 사용 권한
라이선스 사용량집계함
병렬 실행미지원
분산 실행미지원

문법

파일 목록을 조회하려면

sftp PROFILE ls PATH

파일 내용을 읽으려면

sftp PROFILE cat [format={text|csv|tsv|json}] [offset=LONG] [limit=LONG] [encoding=STR] [header=BOOL] PATH

파일을 업로드하려면

sftp PROFILE put [format={text|csv|tsv|json}] [fields=FIELD,...] [delimiter=STR] [encoding=STR] [append=BOOL] [overwrite=BOOL] [partition=BOOL] [multisession=BOOL] [maxsession=INT] PATH

옵션

format={text|csv|tsv|json}
파일 형식 (기본값: text)
  • text: 한 줄을 하나의 레코드로 읽거나 기록합니다.
  • csv: CSV 형식으로 파일을 읽거나 기록합니다.
  • tsv: 탭 구분 형식으로 파일을 읽거나 기록합니다.
  • json: JSON 형식으로 파일을 읽거나 기록합니다.
offset=LONG
cat 동작에서 건너뛸 레코드 수. 0 이상의 정수를 지정합니다. (기본값: 0)
limit=LONG
cat 동작에서 읽을 최대 레코드 수. 0 이상의 정수를 지정합니다.
encoding=STR
파일 인코딩 (기본값: utf-8)
header=BOOL
cat 동작에서 CSV, TSV 형식 파일의 첫 번째 행을 헤더로 사용할지 여부 (기본값: f)
fields=FIELD,...
put 동작에서 기록할 필드 목록. 쉼표(,)로 구분합니다.
delimiter=STR
put 동작에서 text 형식의 필드 구분자 (기본값: 공백)
append=BOOL
put 동작에서 기존 파일에 내용을 추가할지 여부. overwrite 옵션과 동시에 사용할 수 없습니다. (기본값: f)
overwrite=BOOL
put 동작에서 기존 파일을 덮어쓸지 여부. append 옵션과 동시에 사용할 수 없습니다. (기본값: f)
partition=BOOL
put 동작에서 경로에 시간 기반 매크로({logtime:yyyyMMdd} 등)를 사용하여 파티션별로 파일을 분리할지 여부 (기본값: f)
multisession=BOOL
put 동작에서 여러 SFTP 세션을 동시에 사용할지 여부 (기본값: f)
maxsession=INT
put 동작에서 동시에 열 수 있는 최대 세션 수. multisession=t 옵션이 활성화되어 있어야 합니다.

대상

PROFILE
SSH 프로파일 이름. 시스템에 등록된 SSH 접속 프로파일을 지정합니다.
PATH
SFTP 서버의 파일 또는 디렉터리 경로. cat 동작에서는 와일드카드(*)를 파일 이름에 사용할 수 있습니다. put 동작에서 partition=t인 경우 경로 매크로({logtime:yyyyMMdd} 등)를 사용할 수 있습니다.

출력 필드

ls 동작의 출력 필드:

필드타입설명
type문자열항목 유형. dir 또는 file
name문자열파일 또는 디렉터리 이름
file_size64비트 정수파일 크기 (바이트)
uid32비트 정수파일 소유자 UID
gid32비트 정수파일 그룹 GID
is_link불리언심볼릭 링크 여부
perms문자열파일 권한 문자열
modified_at날짜마지막 수정 시각

cat 동작의 출력 필드는 format 옵션에 따라 달라집니다. text 형식에서는 line 필드에 한 줄의 텍스트를 할당합니다. csv, tsv 형식에서는 헤더 또는 열 인덱스 기반 필드를 할당합니다. json 형식에서는 JSON 키-값 쌍을 필드로 할당합니다. 모든 형식에서 _file 필드에 원본 파일 경로를 할당합니다.

오류 코드

파싱 오류
오류 코드메시지설명
40101잘못된 sftp 명령어 문법입니다. sftp [프로파일] [오퍼레이터] [확장 옵션]명령어 문법이 올바르지 않은 경우
40102SSH 프로파일이 존재하지 않습니다.지정한 SSH 프로파일이 등록되지 않은 경우
40103SSH 프로파일을 사용할 권한이 없습니다.현재 사용자에게 해당 프로파일 사용 권한이 없는 경우
40104유효하지 않은 sftp offset 옵션입니다. 0 이상의 정수를 사용해야 합니다.offset 값이 정수가 아닌 경우
40105유효하지 않은 sftp limit 옵션입니다. 0 이상의 정수를 사용해야 합니다.limit 값이 정수가 아닌 경우
40106유효하지 않은 sftp 명령어 오퍼레이터입니다.동작이 ls, cat, put 중 하나가 아닌 경우
40107유효하지 않은 sftp 파일 포맷입니다.format 값이 text, csv, tsv, json 중 하나가 아닌 경우
40108잘못된 인코딩입니다.지원하지 않는 인코딩을 지정한 경우
40112sftp 명령어에 경로 매크로를 사용하는 경우 partition 옵션을 활성화해야 합니다.경로에 매크로가 포함되었으나 partition=t를 지정하지 않은 경우
40113sftp 명령어에 최대로 열 세션수를 지정하려면 multisession옵션을 활성화해야 합니다.maxsession 옵션을 지정했으나 multisession=t가 없는 경우
40114sftp put명령어에서 partition 옵션을 사용하는 경우 overwrite 옵션을 false로 할 수 없습니다.partition=toverwrite=f를 동시에 지정한 경우
40115sftp put 명령어에서 overwrite 와 append 옵션은 동시에 사용할 수 없습니다.put 동작에서 overwriteappend를 동시에 지정한 경우
런타임 오류
오류 코드메시지설명후처리 동작
40109파일 이름 외에는 와일드 카드를 사용할 수 없습니다.경로의 디렉터리 부분에 와일드카드를 사용한 경우쿼리를 중단합니다.
40110sftp 조회 대상이 디렉터리입니다.cat 동작의 대상이 디렉터리인 경우쿼리를 중단합니다.
40111sftp 명령어를 실행할 수 없습니다.SFTP 서버 연결 또는 파일 처리 중 오류가 발생한 경우SSH 연결을 종료합니다.
40116sftp put 명령어에서 overwrite 옵션이 false인 경우 파일을 덮어 쓸 수 없습니다.put 동작에서 기존 파일이 있으나 overwrite가 비활성인 경우쿼리를 중단합니다.
40117sftp put 명령어에서 기록할 필드 목록과 파일에 이미 기록된 필드 목록이 일치하지 않습니다.put 동작에서 append 시 기존 헤더와 필드가 다른 경우쿼리를 중단합니다.
40118sftp 명령어에서 지정된 파일을 읽을 수 있습니다.파일 읽기 중 오류가 발생한 경우쿼리를 중단합니다.

설명

sftp 명령어는 시스템에 등록된 SSH 프로파일을 사용하여 원격 SFTP 서버와 통신합니다. 세 가지 동작을 지원합니다.

  • ls: 지정한 경로의 파일 및 디렉터리 목록을 조회합니다. 디렉터리를 먼저, 파일을 나중에 이름 순으로 정렬하여 출력합니다. ls 동작은 드라이버 쿼리로 동작합니다.
  • cat: 지정한 경로의 파일 내용을 읽어 레코드로 변환합니다. 와일드카드(*)를 파일 이름에 사용할 수 있습니다. cat 동작은 드라이버 쿼리로 동작합니다.
  • put: 입력 레코드를 지정한 경로의 파일에 기록합니다. put 동작은 가공 쿼리로 동작하며, 입력 레코드를 그대로 다음 명령어로 전달합니다.

put 동작에서 partition 옵션을 활성화하면 경로에 시간 기반 매크로를 사용하여 레코드의 _time 필드 값에 따라 파일을 분리하여 기록할 수 있습니다. multisession 옵션을 활성화하면 파티션별로 별도의 SFTP 세션을 사용하여 동시에 여러 파일에 기록할 수 있습니다.

프로파일 이름과 파일 경로에 쿼리 매개변수(${})를 사용할 수 있습니다.

사용 예

이 사용 예에서 조회하는 WEB_APACHE_SAMPLE 테이블을 준비하려면 쿼리 실습용 데이터를 참고하세요.

  1. SFTP 서버의 파일 목록 조회

    sftp myprofile ls /data/logs
    

    myprofile SSH 프로파일을 사용하여 /data/logs 디렉터리의 파일 목록을 조회합니다.

  2. SFTP 서버에서 텍스트 파일 읽기

    sftp myprofile cat /data/logs/access.log
    

    /data/logs/access.log 파일을 텍스트 형식으로 읽어 한 줄씩 레코드로 변환합니다.

  3. CSV 파일을 헤더와 함께 읽기

    sftp myprofile cat format=csv header=t /data/logs/report.csv
    

    CSV 파일의 첫 번째 행을 필드 이름으로 사용하여 파일을 읽습니다.

  4. 와일드카드를 사용하여 여러 JSON 파일 읽기

    sftp myprofile cat format=json /data/logs/*.json
    

    /data/logs/ 디렉터리에서 확장자가 .json인 모든 파일을 읽습니다.

  5. 쿼리 결과를 SFTP 서버에 CSV 파일로 업로드

    table WEB_APACHE_SAMPLE
    | stats count by method
    | sftp myprofile put format=csv fields=method,count /data/report.csv
    

    웹 접근 로그를 HTTP 메소드별로 집계한 결과를 CSV 형식으로 SFTP 서버에 업로드합니다.

  6. 파티션별로 파일 분리 업로드

    table WEB_APACHE_SAMPLE
    | fields src_ip, method, uri, status, bytes
    | sftp myprofile put format=json partition=t overwrite=t /data/logs/{logtime:yyyyMMdd}/access.json
    

    레코드의 시간 값에 따라 날짜별 디렉터리에 JSON 파일을 분리하여 업로드합니다.

호환성

sftp 명령어는 소나 4.0 이전 버전부터 제공되었습니다.