snow sql

Snowflake 쿼리를 실행합니다. 쿼리, 파일 이름 또는 입력 옵션을 사용합니다. 실행할 쿼리는 쿼리 옵션, 파일 이름 옵션(파일에서 가져온 모든 쿼리가 실행됨)을 사용하거나 다른 명령의 출력을 파이프로 연결하여 stdin을 통해 지정할 수 있습니다. 예: cat my.sql | snow sql -i. 이 명령은 클라이언트 측에서 발생하는 변수 대체를 지원합니다.

구문

snow sql
  --query <query>
  --filename <files>
  --stdin
  --variable <data_override>
  --project <project_definition>
  --env <env_overrides>
  --connection <connection>
  --host <host>
  --port <port>
  --account <account>
  --user <user>
  --password <password>
  --authenticator <authenticator>
  --private-key-file <private_key_file>
  --token-file-path <token_file_path>
  --database <database>
  --schema <schema>
  --role <role>
  --warehouse <warehouse>
  --temporary-connection
  --mfa-passcode <mfa_passcode>
  --enable-diag
  --diag-log-path <diag_log_path>
  --diag-allowlist-path <diag_allowlist_path>
  --format <format>
  --verbose
  --debug
  --silent
Copy

인자

없음

선택 사항

--query, -q TEXT

실행할 쿼리입니다.

--filename, -f FILE

실행할 파일입니다. 기본값: [].

--stdin, -i

표준 입력에서 쿼리를 읽습니다. 이 명령으로 입력을 파이프할 때 사용합니다. 기본값: False.

--variable, -D TEXT

키=값 형식의 문자열. 제공된 경우 SQL 콘텐츠는 템플릿으로 취급되며 제공된 데이터를 사용하여 렌더링됩니다.

-p, --project TEXT

Snowflake 프로젝트가 있는 경로입니다. 기본값은 현재 작업 디렉터리입니다.

--env TEXT

키=값 형식의 문자열. 템플릿에 사용되는 env 섹션의 변수를 재정의합니다. 기본값: [].

--connection, -c, --environment TEXT

config.toml 파일에 정의된 연결의 이름입니다. 기본값: default.

--host TEXT

연결을 위한 호스트 주소입니다. 연결에 지정된 값을 재정의합니다.

--port INTEGER

연결의 포트입니다. 연결에 지정된 값을 재정의합니다.

--account, --accountname TEXT

Snowflake 계정에 할당된 이름입니다. 연결에 지정된 값을 재정의합니다.

--user, --username TEXT

Snowflake에 연결할 사용자 이름입니다. 연결에 지정된 값을 재정의합니다.

--password TEXT

Snowflake 비밀번호입니다. 연결에 지정된 값을 재정의합니다.

--authenticator TEXT

Snowflake 인증자입니다. 연결에 지정된 값을 재정의합니다.

--private-key-file, --private-key-path TEXT

Snowflake 개인 키 파일 경로입니다. 연결에 지정된 값을 재정의합니다.

--token-file-path TEXT

Snowflake에 연결할 때 사용해야 하는 OAuth 토큰이 포함된 파일 경로입니다.

--database, --dbname TEXT

사용할 데이터베이스입니다. 연결에 지정된 값을 재정의합니다.

--schema, --schemaname TEXT

사용할 데이터베이스 스키마입니다. 연결에 지정된 값을 재정의합니다.

--role, --rolename TEXT

사용할 역할입니다. 연결에 지정된 값을 재정의합니다.

--warehouse TEXT

사용할 웨어하우스입니다. 연결에 지정된 값을 재정의합니다.

--temporary-connection, -x

config에서 정의된 연결 대신, 명령줄 매개 변수로 정의된 연결을 사용합니다. 기본값: False.

--mfa-passcode TEXT

다단계 인증(MFA)에 사용할 토큰입니다.

--enable-diag

Python 커넥터 진단 테스트를 실행합니다. 기본값: False.

--diag-log-path TEXT

진단 보고서 경로입니다. 기본값: <temporary_directory>.

--diag-allowlist-path TEXT

선택적 허용 목록에 대한 진단 보고서 경로입니다.

--format [TABLE|JSON]

출력 형식을 지정합니다. 기본값: TABLE.

--verbose, -v

로그 수준 info 이상의 로그 항목을 표시합니다. 기본값: False.

--debug

로그 수준 디버그 이상에 대한 로그 항목을 표시하며, 디버그 로그에는 추가 정보가 포함됩니다. 기본값: False.

--silent

콘솔로의 중간 출력을 끕니다. 기본값: False.

--help

이 명령에 대한 도움말 텍스트를 표시합니다.

사용법 노트

다음 옵션 중 하나를 사용하여 실행할 SQL 쿼리를 지정할 수 있습니다.

  • --query 옵션을 사용하여 쿼리 문자열을 지정합니다.

  • --filename 옵션을 사용하여 실행할 SQL 쿼리가 포함된 파일을 지정합니다.

  • 쿼리를 stdin 으로 지정하고 snow sql 명령으로 파이프합니다(예: cat my.sql | snow sql.).

  • 쿼리에 SYSTEM 함수 의 달러 기호 등 셸에서 해석하지 않으려는 특수 문자가 포함되어 있는 경우 다음 중 하나를 수행할 수 있습니다.

    • 다음과 같이 큰따옴표 대신 작은따옴표로 쿼리를 묶습니다.

      snow sql -q 'SELECT SYSTEM$CLIENT_VERSION_INFO()'

    • 다음에서와 같이, 특수 문자를 이스케이프합니다.

      snow sql -q "SELECT SYSTEM\$CLIENT_VERSION_INFO()"

  • 변수를 사용하여 SQL 쿼리의 <% variable_name %> 자리표시자와 -D 명령줄 옵션의 조합으로 SQL 쿼리를 템플릿화할 수 있습니다

    snow sql -q "select * from my-database order by <% column_name %>" -D "column_name=Country"
    
    Copy

    참고

    현재 템플릿에 SnowSQL &variable_name<% variable_name %> 구문을 사용할 수 있습니다. 그러나 Snowflake는 <% variable_name %> 구문을 사용할 것을 권장합니다.

  • 다음 예제에서는 SQL SYSTEM$CLIENT_VERSION_INFO 시스템 함수를 사용하여 클라이언트 및 드라이버에 대한 버전 정보를 반환합니다.

    snow sql --query 'SELECT SYSTEM$CLIENT_VERSION_INFO();'
    
    Copy
    select current_version();
    +-------------------+
    | CURRENT_VERSION() |
    |-------------------|
    | 8.25.1            |
    +-------------------+
    
  • 다음 예제는 클라이언트 측 변수를 사용하여 데이터베이스를 지정하는 방법을 보여줍니다.

    snow sql -q "select * from <% database %>.logs" -D "database=dev"
    
    Copy

    명령이 실행되면 <% database %> 변수의 값 dev 를 대체하여 dev.logs 식별자를 생성한 다음 select * from dev.logs SQL 쿼리를 처리하기 위해 Snowflake로 보냅니다.

    참고

    현재 템플릿에는 SnowSQL &variable_name 및 & { variable_name } 구문을 사용할 수 있습니다. 그러나 Snowflake는 <% variable_name %> 구문을 사용할 것을 권장합니다.

  • 이 예제에서는 --env 옵션을 사용하여 환경 변수를 전달하는 방법을 보여줍니다.

    snow sql -q "select '<% ctx.env.test %>'" --env test=value_from_cli
    
    Copy