SnowSQL 사용하기

이 항목에서는 클라이언트 시작/중지, 클라이언트 내 명령 및 변수 사용, 기타 일반적인 사용 정보를 등과 같은 SnowSQL의 사용 방법에 대해 설명합니다.

이 항목의 내용:

명령 실행하기

Snowflake 세션에서는 명령을 실행하여 특정 작업을 수행할 수 있습니다. SnowSQL에서 모든 명령은 느낌표(!)로 시작하고 다음이 명령 이름을 사용합니다.

예:

user#> !help

+------------+-------------------------------------------+-------------+--------------------------------------------------------------------------------------------+
| Command    | Use                                       | Aliases     | Description                                                                                |
|------------+-------------------------------------------+-------------+--------------------------------------------------------------------------------------------|
| !abort     | !abort <query id>                         |             | Abort a query                                                                              |
| !connect   | !connect <connection_name>                |             | Create a new connection                                                                    |
| !define    | !define <variable>=<value>                |             | Define a variable as the given value                                                       |
| !edit      | !edit <query>                             |             | Opens up a text editor. Useful for writing longer queries. Defaults to last query          |
| !exit      | !exit                                     | !disconnect | Drop the current connection                                                                |
| !help      | !help                                     | !helps, !h  | Show the client help.                                                                      |
| !options   | !options                                  | !opts       | Show all options and their values                                                          |
| !pause     | !pause                                    |             | Pauses running queries.                                                                    |
| !print     | !print <message>                          |             | Print given text                                                                           |
| !queries   | !queries help, <filter>=<value>, <filter> |             | Lists queries matching the specified filters. Write <!queries> help for a list of filters. |
| !quit      | !quit                                     | !q          | Drop all connections and quit SnowSQL                                                      |
| !rehash    | !rehash                                   |             | Refresh autocompletion                                                                     |
| !result    | !result <query id>                        |             | See the result of a query                                                                  |
| !set       | !set <option>=<value>                     |             | Set an option to the given value                                                           |
| !source    | !source <filename>, <url>                 | !load       | Execute given sql file                                                                     |
| !spool     | !spool <filename>, off                    |             | Turn on or off writing results to file                                                     |
| !system    | !system <system command>                  |             | Run a system command in the shell                                                          |
| !variables | !variables                                | !vars       | Show all variables and their values                                                        |
+------------+-------------------------------------------+-------------+--------------------------------------------------------------------------------------------+
Copy

각 명령에 대한 자세한 설명은 이 항목의 명령 참조 섹션을 참조하십시오.

변수 사용하기

변수를 사용하여 Snowflake 세션에서 값을 저장하고 재사용할 수 있습니다. 변수를 사용하면 사용자 정의 및 데이터베이스 값을 쿼리에서 사용할 수 있습니다.

다음 섹션에서는 이러한 변수를 정의 및 사용하는 방법에 대해 설명합니다.

변수 정의하기

SnowSQL용 변수는 다양한 방식으로 정의할 수 있습니다.

변수를 정의한 후 연결하기(구성 파일)

Snowflake에 연결하기 전에 변수를 정의하려면, config 구성 파일에 변수를 추가합니다.

  1. 텍스트 편집기에서 SnowSQL 구성 파일 (config) 을 엽니다. 이 파일의 기본 위치:

    Linux/macOS:

    ~/.snowsql/

    Windows:

    %USERPROFILE%\.snowsql\

    참고

    기본 위치는 SnowSQL을 시작할 때 --config path 명령줄 플래그를 지정하여 변경할 수 있습니다.

  1. [variables] 섹션에서 사용할 변수를 정의합니다.

    [variables]
    <variable_name>=<variable_value>
    
    Copy

    여기서:

    • variable_name 은 변수의 이름을 나타내는 영숫자 문자열(대/소문자를 구분하지 않음)입니다.

    • variable_value 은 변수의 값을 나타내는 문자열입니다. 필요한 경우, 문자열을 작은따옴표 또는 큰따옴표로 묶을 수 있습니다.

    예:

    [variables]
    tablename=CENUSTRACKONE
    
    Copy

연결 중에 변수 정의하기(-D 또는 --variable 명령줄 플래그)

Snowflake에 연결하는 동안 변수를 정의하려면 터미널 명령줄에서 -D 또는 --variable 명령줄 플래그를 지정합니다. 이 플래그에 대한 인자는 variable_name=variable_value 의 형식으로 변수의 이름 및 값을 지정합니다.

예:

Linux/macOS:
$ snowsql ... -D tablename=CENUSTRACKONE --variable db_key=$DB_KEY
Copy
Windows:
$ snowsql ... -D tablename=CENUSTRACKONE --variable db_key=%DB_KEY%
Copy

위의 예에서:

  • -D 는 변수의 이름을 tablename 에서 CENUSTRACKONE 으로 설정합니다.

  • --variable 은 이름이 db_key 인 Snowflake 변수를 DB_KEY 환경 변수로 할당합니다.

세션 내에서 변수 정의하기(!define 명령)

Snowflake에 연결한 후 변수를 정의하려면 세션에서 !define 명령을 실행합니다.

예:

user#> !define tablename=CENUSTRACKONE
Copy

변수 대체 활성화하기

SnowSQL이 변수의 값을 대체하도록 하려면 다음 방법 중 1개를 사용하여 variable_substitution 구성 옵션을 true 로 설정해야 합니다.

  • SnowSQL을 시작하기 전 이 옵션을 설정하려면, 텍스트 편집기에서 SnowSQL 구성 파일 을 열고 [options] 섹션에서 이 옵션을 설정합니다.

    [options]
    variable_substitution = True
    
    Copy
  • SnowSQL을 시작할 때 이 옵션을 설정하려면 -o 명령줄 플래그를 지정합니다.

    $ snowsql ... -o variable_substitution=true
    
    Copy
  • SnowSQL 세션에서 이 옵션을 설정하려면 세션에서 !set 명령을 실행합니다.

    user#> !set variable_substitution=true
    
    Copy

    참고

    현재 variable_substitution 옵션과 같이 옵션 값의 설정을 해제 할 수 있는 옵션이 없습니다. 변수 대체를 비활성화해야 하는 경우에는 !set variable_substitution=false 명령을 실행합니다.

세션에서 변수 대체하기

변수 대체를 활성화한 후에는 SQL 문에서 변수를 사용할 수 있습니다.

문에서 변수를 사용하려면 &variable_name 구문을 사용합니다. 변수 이름에서는 대/소문자를 구분하지 않음에 유의하십시오. 예:

user#> !define snowshell=bash

user#> !set variable_substitution=true

user#> select '&snowshell';

+--------+
| 'BASH' |
|--------|
| bash   |
+--------+
Copy

variable_substitution 옵션이 활성화되어 있지 않으면 변수 대체가 수행되지 않습니다. 예:

user#> !define snowshell=bash

user#> !set variable_substitution=false

user#> select '&snowshell';

+--------------+
| '&SNOWSHELL' |
|--------------|
| &snowshell   |
+--------------+
Copy

정의되지 않은 변수를 참조하면 SnowSQL에서 오류가 표시됩니다. 예:

select '&z';

Variable z is not defined
Copy

변수와 텍스트를 결합하려면 변수 참조를 중괄호로 묶습니다. 예:

user#> !define snowshell=bash

user#> !set variable_substitution=true

select '&{snowshell}_shell';

+--------------+
| 'BASH_SHELL' |
|--------------|
| bash_shell   |
+--------------+
Copy

대체를 사용하지 않고 앰퍼샌드 기호를 사용하려면, 두 번째 앰퍼샌드 기호로 앰퍼샌드 기호를 이스케이프 처리합니다.

&&variable

예:

user#> !set variable_substitution=true

user#> select '&notsubstitution';

Variable notsubstitution is not defined

user#> select '&&notsubstitution';

+--------------------+
| '&NOTSUBSTITUTION' |
|--------------------|
| &notsubstitution   |
+--------------------+
Copy

변수 나열하기

변수를 나열하려면 세션에서 !variables 또는 !vars 명령을 실행합니다.

user#> !variables

+-----------+-------+
| Name      | Value |
|-----------+-------|
| snowshell | bash  |
+-----------+-------+
Copy

기본 제공 변수 사용하기

SnowSQL에는 현재 사용자 세션에서 실행된 문에 대한 메타데이터를 반환하는 기본 제공 변수 세트가 포함되어 있습니다.

이러한 각 변수는 이름이 밑줄 문자 2개(“__”)로 시작합니다.

__rowcount

사용자가 가장 최근에 실행한 DML 문에 의해 영향을 받은 행의 수를 반환합니다.

user#> insert into a values(1),(2),(3);

+-------------------------+
| number of rows inserted |
|-------------------------|
|                       3 |
+-------------------------+
3 Row(s) produced. Time Elapsed: 0.950s

user#> !set variable_substitution=true

user#> select &__rowcount;

+---+
| 3 |
|---|
| 3 |
+---+
Copy
__sfqid

사용자가 실행한 가장 최근 쿼리에 대한 쿼리 ID를 반환합니다.

user#> !set variable_substitution=true

user#> select * from a;

user#> select '&__sfqid';

+----------------------------------------+
| 'A5F35B56-49A2-4437-BA0E-998496CE793E' |
|----------------------------------------|
| a5f35b56-49a2-4437-ba0e-998496ce793e   |
+----------------------------------------+
Copy

자동 완성 사용하기

여러 SQL 함수, 테이블 이름, 변수가 SnowSQL에 저장되며 대화형 모드에서는 자동 완성됩니다. 자동 완성에서 제안하는 내용을 선택하려면 Tab 키를 누르십시오. 다른 제안 내용을 선택하려면 키를 사용하여 원하는 옵션을 강조 표시한 후 Tab 을 누르십시오.

대화형 자동 완성을 비활성화하려면, 구성 파일 에서 auto_completion 구성 옵션을 False 로 설정합니다.

명령줄 기록 보기

키를 사용하여 최근 명령줄 내역을 불러올 수 있습니다. 키를 반복해서 누르면 버퍼에 있는 내역이 표시됩니다.

기록 파일

대화형 명령줄 내역 파일의 이름은 history 이며 ~/.snowsql/history 에 위치합니다.

배치 스크립트 실행하기

일괄 처리 스크립트는 다음의 2가지 방법으로 실행할 수 있습니다.

  • 연결 매개 변수 사용하기(Snowflake에 연결하는 동안)

  • 명령 실행하기(Snowflake 세션의 명령줄에서)

연결 중 실행하기(-f 연결 매개 변수)

Snowflake에 연결하는 동안 SQL 스크립트를 실행하려면 -f <입력_파일 이름> 연결 매개 변수를 사용합니다.

스크립트에 대한 출력 파일은 -o output_file=<출력_파일 이름> 을 사용하여 지정할 수 있습니다. 또한, -o quiet=true 를 사용하여 표준 출력을 끄고 -o friendly=false 를 사용하여 시작 및 종료 메시지를 끌 수 있습니다.

예:

snowsql -a myorganization-myaccount -u jsmith -f /tmp/input_script.sql -o output_file=/tmp/output.csv -o quiet=true -o friendly=false -o header=false -o output_format=csv
Copy

모든 연결 매개 변수에 대한 자세한 내용은 연결 매개 변수 참조 를 참조하십시오.

세션에서 실행하기(!source 또는 !load 명령)

Snowflake에 연결한 후 SQL 스크립트를 실행하려면 세션에서 !source (또는 !load) 명령을 실행합니다.

예:

user#> !source example.sql
Copy

데이터 내보내기

다음 구성 옵션 을 사용하여 쿼리 결과를 정의된 형식의 파일로 출력합니다.

  • output_format=output_format

  • output_file=output_filename

출력에서 시작 텍스트, 헤더 텍스트, 시간 및 종료 메시지를 제거하려면 다음 옵션도 설정합니다.

  • friendly=false

  • header=false

  • timing=false

모든 구성 옵션에서와 동일하게, 다음 방법 중 1개를 사용하여 설정할 수 있습니다.

  • 구성 파일에서(Snowflake에 연결하기 전).

  • -o 또는 --options 연결 매개 변수를 사용하여(Snowflake에 연결하는 동안).

  • !set 명령을 실행하여(Snowflake 세션의 명령줄에서).

연속 쿼리는 출력 파일에 추가됨에 유의하십시오. 또는, 쿼리 출력을 파일로 리디렉션하고 각각의 새로운 문으로 파일을 덮어쓰려면 스크립트에서 보다 큼 기호(>)를 사용합니다.

다음 예에서 SnowSQL은 명명된 연결을 사용하여 계정에 연결하고 테이블을 쿼리합니다. 출력은 현재 로컬 디렉터리에 있는 이름이 output_file.csv 인 CSV 파일에 기록됩니다.

Linux/macOS:

snowsql -c my_example_connection -d sales_db -s public -q 'select * from mytable limit 10' -o output_format=csv -o header=false -o timing=false -o friendly=false  > output_file.csv
Copy
Windows:

snowsql -c my_example_connection -d sales_db -s public -q "select * from mytable limit 10" -o output_format=csv -o header=false -o timing=false -o friendly=false  > output_file.csv
Copy

SnowSQL 프롬프트 형식 변경하기

SnowSQL 프롬프트는 현재 세션에 대한 상황에 맞는 정보를 동적으로 표시합니다.

  • Snowflake에 로그인하면 프롬프트에 사용자 이름과 기본 웨어하우스, 데이터베이스 및 스키마(기본값이 설정된 경우)가 표시됩니다.

  • 세션에서 USE 명령을 사용하여 웨어하우스, 데이터베이스 또는 스키마를 설정하거나 변경하면 상황을 반영하여 프롬프트가 변경됩니다.

prompt_format 구성 옵션과 각 오브젝트 타입에 대한 대괄호로 묶인 Pygments 토큰을 [token] (예: [user] 또는 [warehouse]) 타입으로 사용하여 프롬프트의 모양과 구조를 제어할 수 있습니다.

토큰은 향후의 프롬프트에 영향을 줍니다. 사용자는 각 토큰의 순서, 색상 및 토큰 간의 구분 기호를 변경할 수 있습니다.

모든 구성 옵션에서와 동일하게, 다음 방법 중 1개를 사용하여 프롬프트를 설정할 수 있습니다.

  • 구성 파일에서(Snowflake에 연결하기 전).

  • -o 또는 --options 연결 매개 변수를 사용하여(Snowflake에 연결하는 동안).

  • !set 명령을 실행하여(Snowflake 세션의 명령줄에서).

참고

연결 매개 변수를 사용하거나 명령줄에서 직접 프롬프트를 변경하는 경우 변경 사항은 현재 세션에만 적용됩니다. 향후 세션에서도 변경 사항을 유지하려면 구성 파일에서 옵션을 설정해야 합니다.

지원되는 토큰

SnowSQL에서 토큰으로 지원되는 오브젝트 타입은 다음과 같습니다.

  • user

  • account

  • role

  • database

  • schema

  • warehouse

기본 프롬프트

SnowSQL 기본 프롬프트에서 사용되는 토큰 및 구조는 다음과 같습니다.

[user]#[warehouse]@[database].[schema]>
Copy

예:

jdoe#DATALOAD@BOOKS_DB.PUBLIC>
Copy

프롬프트 예

위의 예를 계속하여, 명령줄에서 실행된 다음 !set 명령은 역할 토큰을 추가하고 토큰의 순서를 userrole, databaseschema, 그다음은 warehouse 로 변경합니다. 또한, 각 토큰의 구분 기호를 마침표(.)로 변경하고 토큰이 다른 색상을 사용하도록 설정합니다.

jdoe#DATALOAD@BOOKS_DB.PUBLIC> !set prompt_format=[#FF0000][user].[role].[#00FF00][database].[schema].[#0000FF][warehouse]>
Copy

이 예의 세션에서 표시되는 프롬프트는 다음과 같습니다.

SnowSQL 프롬프트 형식

Snowflake 연결 끊기 및 SnowSQL 종료하기

SnowSQL은 다음을 위한 별도의 명령을 제공합니다.

  • SnowSQL을 중지하지 않고 개별 연결(즉, 세션)을 종료합니다.

  • SnowSQL을 종료하면 모든 연결도 자동으로 종료됩니다.

연결/세션을 종료하려면 !exit 명령(또는 별칭인 !disconnect)을 사용합니다. 이후에 SnowSQL config 파일에 여러 연결을 정의할 수 있는 경우 !connect <연결_이름> 을 사용하여 다시 연결할 수 있습니다. 열려 있는 연결이 1개인 경우에는 !exit 명령을 사용해도 SnowSQL가 종료/중지됩니다.

모든 연결을 종료한 후 SnowSQL를 종료/중지하려면 !quit 명령(또는 별칭인 !q)을 사용합니다. 키보드에서 CTRL + d 를 입력할 수도 있습니다.

종료 코드

SnowSQL이 종료/종료할 때 반환되는 몇 가지 가능한 종료 코드가 있습니다.

0:

모든 작업이 원활하게 실행되었습니다.

1:

클라이언트에서 문제가 발생했습니다.

2:

명령줄 인자에서 문제가 발생했습니다.

3:

SnowSQL이 서버에 연결하지 못했습니다.

4:

SnowSQL이 서버와 올바르게 통신하지 못했습니다.

5:

exit_on_error 구성 옵션이 설정되었지만, 오류로 인해 SnowSQL이 종료되었습니다.

기본 키 바인딩

Tab

현재 자동 완성 제안 항목을 사용합니다.

CTRL + d

SnowSQL을 종료/중지합니다.

명령 참조

!abort

쿼리를 중단합니다(쿼리 ID에 의해 지정됨). 쿼리 ID는 웹 인터페이스의 History 기록 탭 페이지에서 얻을 수 있습니다.

예:

user#> !abort 77589bd1-bcbf-4ec8-9ebc-6c949b00614d;
Copy

!connect

SnowSQL은 !connect <연결_이름> 을 사용하여 여러 세션(즉, 연결)을 지원합니다.

  • connection_name 과 관련된 연결 매개 변수/옵션은 SnowSQL 구성 파일의 해당 [connections.<연결_이름>] 섹션에 저장됩니다.

  • 매개 변수/옵션이 [connections.<연결_이름>] 섹션에 지정되지 않은 경우 지정되지 않은 매개 변수는 기본적으로 [connections] 아래에 매개 변수로 설정됩니다.

연결할 때 연결이 연결 스택에 추가되고 종료하면 이전 연결로 돌아갑니다. 연결 개수에 관계없이, 종료하면 모든 연결이 종료됩니다.

예:

구성 파일:

[connections.my_example_connection]
...
Copy

명령 파일:

user#> !connect my_example_connection
Copy

!define

다음 형식을 사용하여 변수를 지정된 값으로 설정합니다.

!define <변수_이름>=<변수_값>

이름과 값은 공백을 사용하지 않고 1개의 = 로 구분해야 합니다. 변수에 사용할 수 있는 유효한 문자는 다음과 같습니다.

0-9a-zA-Z_

변수 정의 및 사용에 대한 자세한 내용은 변수 사용하기 를 참조하십시오.

!edit

editor 연결 매개 변수를 사용하여 설정한 편집기를 엽니다(편집기가 설정되지 않은 경우 기본값은 vim). 이 명령은 쿼리를 인자로 허용합니다. 인자가 전달되지 않으면 마지막으로 실행된 쿼리가 열립니다.

참고

편집기를 종료하기 전 또는 종료하는 동안 저장해야 하며, 그렇지 않으면 편집기에서 입력/수정한 텍스트가 저장되지 않습니다.

!exit , !disconnect

현재 연결을 종료하고 이 연결이 마지막 연결이면 SnowSQL을 종료합니다.

!help , !helps , !h

SnowSQL 명령의 도움말을 표시합니다.

!options , !opts

모든 SnowSQL 구성 옵션 및 현재 설정 값의 목록을 반환합니다. 이러한 옵션은 현재 SnowSQL 세션에서 !set 명령을 사용하여 설정할 수 있습니다.

참고

이러한 옵션은 SnowSQL을 호출할 때 명령줄에서 커넥터 매개 변수 로 또는 SnowSQL용 구성 파일 에서도 설정할 수 있습니다.

!pause

실행 중인 쿼리를 일시 중지합니다. 계속하려면 <Enter> 키를 누릅니다.

!print

현재 스풀링 중인 파일과 화면에 지정된 텍스트를 인쇄합니다.

예:

user#> !print Include This Text
Copy

!queries

지정된 필터와 일치하는 모든 쿼리를 나열합니다. 기본 필터는 sessionamount=25 이며 현재 세션에서 25개의 가장 최근 쿼리를 반환합니다.

예:

  • 이 현재 세션에서 실행된 가장 최근 쿼리 25개를 반환합니다.

    !queries session
    
    Copy
  • 계정에서 실행된 가장 최근 쿼리 20개를 반환합니다.

    !queries amount=20
    
    Copy
  • 실행에 200 밀리초 이상이 소요된 계정에서 실행된 가장 최근 쿼리 20개를 반환합니다.

    !queries amount=20 duration=200
    
    Copy
  • 지정된 웨어하우스에서 실행된 가장 최근 쿼리 25개를 반환합니다.

    !queries warehouse=mywh
    
    Copy

이 명령은 반환된 각 쿼리 ID에 대한 변수를 생성합니다. 이러한 변수를 사용하려면 변수 대체를 활성화해야 함에 유의하십시오. 예:

user#> !queries session

+-----+--------------------------------------+----------+-----------+----------+
| VAR | QUERY ID                             | SQL TEXT | STATUS    | DURATION |
|-----+--------------------------------------+----------+-----------+----------|
| &0  | acbd6778-c68c-4e79-a977-510b2d8c08f1 | select 1 | SUCCEEDED |       19 |
+-----+--------------------------------------+----------+-----------+----------+

user#> !result &0

+---+
| 1 |
|---|
| 1 |
+---+

user#> !result acbd6778-c68c-4e79-a977-510b2d8c08f1

+---+
| 1 |
|---|
| 1 |
+---+
Copy

!quit , !q (또한 CTRL + d)

모든 연결을 종료하고 SnowSQL을 종료합니다.

!rehash

자동 완성 토큰을 다시 동기화합니다.

일반적인 사용에는 자동 완성 토큰을 다시 동기화할 필요가 없습니다. 그러나 특정 상황에서는 서버 측 토큰을 강제로 업데이트하는 것이 유용할 수 있습니다(예: 다른 세션에서 새 사용자 정의 함수가 생성되는 경우).

!result

완료된 쿼리의 결과를 반환합니다(쿼리 ID로 지정됨). 쿼리 IDs는 웹 인터페이스의 History 기록 탭 페이지에서 또는 !queries 명령을 사용하여 얻을 수 있습니다.

쿼리가 아직 실행 중인 경우 명령은 쿼리가 완료될 때까지 대기합니다.

예:

user#> !result 77589bd1-bcbf-4ec8-9ebc-6c949b00614d;
Copy

!set

<옵션>=<값> 의 형식을 사용하여 지정된 SnowSQL 구성 옵션 을 지정된 값으로 설정합니다.

현재 옵션 값의 설정을 해제 할 수 있는 옵션은 제공되지 않음에 유의하십시오. 옵션 값을 변경하려면, !set 명령을 원하는 값으로 다시 실행해야 합니다.

예:

user#> !options

+-----------------------+-------------------+
| Name                  | Value             |
|-----------------------+-------------------|
 ...
| rowset_size           | 1000              |
 ...
+-----------------------+-------------------+

user#> !set rowset_size=500

user#> !options

+-----------------------+-------------------+
| Name                  | Value             |
|-----------------------+-------------------|
 ...
| rowset_size           | 500               |
 ...
+-----------------------+-------------------+

user#> !set rowset_size=1000

user#> !options

+-----------------------+-------------------+
| Name                  | Value             |
|-----------------------+-------------------|
 ...
| rowset_size           | 1000              |
 ...
+-----------------------+-------------------+
Copy

중요

옵션과 값 사이에는 공백을 사용할 수 없습니다. 일부 옵션은 정의된 값 세트를 지원하며, 제공된 값이 지원되지 않으면 SnowSQL은 오류를 반환합니다. 사용자가 새 옵션을 만들 수 없습니다.

설정할 수 있는 모든 구성 옵션 목록을 살펴보려면 !options 명령을 사용합니다.

!source , !load

파일에서 SQL을 실행합니다. 로컬 파일 또는 URL에서 SQL을 실행할 수 있습니다.

예:

user#> !source example.sql

user#> !load /tmp/scripts/example.sql

user#> !load http://www.example.com/sql_text.sql
Copy

!spool

이 명령은 다음의 2가지 방법으로 실행할 수 있습니다.

  • 스풀링을 활성화하고 이후의 모든 문/쿼리 결과를 지정된 파일에 씁니다.

    !spool <파일_이름>

  • 결과 스풀링을 끕니다(활성화된 경우).

    !spool off

예:

user#> select 1 num;

+-----+
| NUM |
|-----|
|   1 |
+-----+

user#> !spool /tmp/spool_example

user#> select 2 num;

+---+
| 2 |
|---|
| 2 |
+---+

user#> !spool off

user#> select 3 num;

+---+
| 3 |
|---|
| 3 |
+---+

user#> !exit

Goodbye!

$ cat /tmp/spool_example

+---+
| 2 |
|---|
| 2 |
+---+
Copy

우선 !set output_format=<형식> 명령을 실행하여 출력 형식을 변경할 수 있습니다. 옵션에서 지원되는 값은 다음과 같습니다.

  • expanded

  • fancy_grid

  • grid

  • html

  • latex

  • latex_booktabs

  • mediawiki

  • orgtbl

  • pipe

  • plain

  • psql

  • rst

  • simple

  • tsv

권장 값: psql, fancy_grid 또는 grid

예를 들어, CSV 형식으로 출력하려면:

user#> !set output_format=csv

user#> !spool /tmp/spool_example
Copy

!system

셸 명령을 실행합니다.

!system <명령>

다음 예에서는 사용자의 홈 디렉터리에서 ls 명령을 실행합니다.

user#> !system ls ~
Copy

!variables , !vars

현재 모든 변수를 나열합니다. 현재 정의된 각 <변수_이름>=<변수_값> 페어를 반환합니다.

한 번 할당된 변수는 삭제할 수 없지만, 값을 제외하고 변수 이름을 지정하여 해당 값을 제거할 수 있습니다. 예:

user#> !set variable_substitution=true

user#> !define SnowAlpha=_ALPHA_

user#> !variables

+------------------+---------+
| Name             | Value   |
|------------------+---------|
| snowalpha        | _ALPHA_ |
+------------------+---------+

user#> !define SnowAlpha

user#> !variables

+------------------+-------+
| Name             | Value |
|------------------+-------|
| snowalpha        |       |
+------------------+-------+

user#> !define snowalpha=456

user#> select &snowalpha;

+-----+
| 456 |
|-----|
| 456 |
+-----+
Copy

변수 설정에 대한 자세한 내용은 이 항목의 변수 사용하기 섹션을 참조하십시오.

문제 해결

오류 메시지: Variable is not defined

원인:

SnowSQL에서 명령을 실행할 때 이 오류 메시지가 나타나는 경우 CREATE FUNCTION 명령 내의 앰퍼샌드(&)가 그 원인일 수 있습니다. (앰퍼샌드는 SnowSQL 변수 대체 문자입니다.) 예를 들어, SnowSQL에서 다음을 실행하면 이 오류가 발생합니다.

create function mask_bits(...)
    ...
    as
    $$
    var masked = (x & y);
    ...
    $$;
Copy

이 오류는 함수가 호출될 때가 아니라 생성될 때 발생합니다.

해결책:

SnowSQL에서 변수 대체를 사용하지 않으려는 경우 다음 명령을 실행하여 변수 대체를 명시적으로 비활성화할 수 있습니다.

!set variable_substitution=false;
Copy

변수 대체에 대한 자세한 내용은 변수 사용하기 을 참조하십시오.