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 | +------------+-------------------------------------------+-------------+--------------------------------------------------------------------------------------------+
각 명령에 대한 자세한 설명은 이 항목의 명령 참조 섹션을 참조하십시오.
변수 사용하기¶
변수를 사용하여 Snowflake 세션에서 값을 저장하고 재사용할 수 있습니다. 변수를 사용하면 사용자 정의 및 데이터베이스 값을 쿼리에서 사용할 수 있습니다.
다음 섹션에서는 이러한 변수를 정의 및 사용하는 방법에 대해 설명합니다.
변수 정의하기¶
SnowSQL용 변수는 다양한 방식으로 정의할 수 있습니다.
변수를 정의한 후 연결하기(구성 파일)¶
Snowflake에 연결하기 전에 변수를 정의하려면, config
구성 파일에 변수를 추가합니다.
텍스트 편집기에서 SnowSQL 구성 파일 (
config
) 을 엽니다. 이 파일의 기본 위치:- Linux/macOS:
~/.snowsql/
- Windows:
%USERPROFILE%\.snowsql\
참고
기본 위치는 SnowSQL을 시작할 때
--config path
명령줄 플래그를 지정하여 변경할 수 있습니다.
[variables]
섹션에서 사용할 변수를 정의합니다.[variables] <variable_name>=<variable_value>
여기서:
variable_name
은 변수의 이름을 나타내는 영숫자 문자열(대/소문자를 구분하지 않음)입니다.variable_value
은 변수의 값을 나타내는 문자열입니다. 필요한 경우, 문자열을 작은따옴표 또는 큰따옴표로 묶을 수 있습니다.
예:
[variables] tablename=CENUSTRACKONE
연결 중에 변수 정의하기(-D
또는 --variable
명령줄 플래그)¶
Snowflake에 연결하는 동안 변수를 정의하려면 터미널 명령줄에서 -D
또는 --variable
명령줄 플래그를 지정합니다. 이 플래그에 대한 인자는 variable_name=variable_value
의 형식으로 변수의 이름 및 값을 지정합니다.
예:
- Linux/macOS:
$ snowsql ... -D tablename=CENUSTRACKONE --variable db_key=$DB_KEY
- Windows:
$ snowsql ... -D tablename=CENUSTRACKONE --variable db_key=%DB_KEY%
위의 예에서:
-D
는 변수의 이름을tablename
에서CENUSTRACKONE
으로 설정합니다.--variable
은 이름이db_key
인 Snowflake 변수를DB_KEY
환경 변수로 할당합니다.
세션 내에서 변수 정의하기(!define
명령)¶
Snowflake에 연결한 후 변수를 정의하려면 세션에서 !define
명령을 실행합니다.
예:
user#> !define tablename=CENUSTRACKONE
변수 대체 활성화하기¶
SnowSQL이 변수의 값을 대체하도록 하려면 다음 방법 중 1개를 사용하여 variable_substitution
구성 옵션을 true
로 설정해야 합니다.
SnowSQL을 시작하기 전 이 옵션을 설정하려면, 텍스트 편집기에서 SnowSQL 구성 파일 을 열고
[options]
섹션에서 이 옵션을 설정합니다.[options] variable_substitution = True
SnowSQL을 시작할 때 이 옵션을 설정하려면
-o
명령줄 플래그를 지정합니다.$ snowsql ... -o variable_substitution=true
SnowSQL 세션에서 이 옵션을 설정하려면 세션에서
!set
명령을 실행합니다.user#> !set variable_substitution=true
참고
현재
variable_substitution
옵션과 같이 옵션 값의 설정을 해제 할 수 있는 옵션이 없습니다. 변수 대체를 비활성화해야 하는 경우에는!set variable_substitution=false
명령을 실행합니다.
세션에서 변수 대체하기¶
변수 대체를 활성화한 후에는 SQL 문에서 변수를 사용할 수 있습니다.
문에서 변수를 사용하려면 &variable_name
구문을 사용합니다. 변수 이름에서는 대/소문자를 구분하지 않음에 유의하십시오. 예:
user#> !define snowshell=bash user#> !set variable_substitution=true user#> select '&snowshell'; +--------+ | 'BASH' | |--------| | bash | +--------+
variable_substitution
옵션이 활성화되어 있지 않으면 변수 대체가 수행되지 않습니다. 예:
user#> !define snowshell=bash user#> !set variable_substitution=false user#> select '&snowshell'; +--------------+ | '&SNOWSHELL' | |--------------| | &snowshell | +--------------+
정의되지 않은 변수를 참조하면 SnowSQL에서 오류가 표시됩니다. 예:
select '&z'; Variable z is not defined
변수와 텍스트를 결합하려면 변수 참조를 중괄호로 묶습니다. 예:
user#> !define snowshell=bash user#> !set variable_substitution=true select '&{snowshell}_shell'; +--------------+ | 'BASH_SHELL' | |--------------| | bash_shell | +--------------+
대체를 사용하지 않고 앰퍼샌드 기호를 사용하려면, 두 번째 앰퍼샌드 기호로 앰퍼샌드 기호를 이스케이프 처리합니다.
&&variable
예:
user#> !set variable_substitution=true user#> select '¬substitution'; Variable notsubstitution is not defined user#> select '&¬substitution'; +--------------------+ | '&NOTSUBSTITUTION' | |--------------------| | ¬substitution | +--------------------+
변수 나열하기¶
변수를 나열하려면 세션에서 !variables
또는 !vars
명령을 실행합니다.
user#> !variables +-----------+-------+ | Name | Value | |-----------+-------| | snowshell | bash | +-----------+-------+
기본 제공 변수 사용하기¶
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 | +---+
__sfqid
사용자가 실행한 가장 최근 쿼리에 대한 쿼리 ID를 반환합니다.
user#> !set variable_substitution=true user#> select * from a; user#> select '&__sfqid'; +----------------------------------------+ | 'A5F35B56-49A2-4437-BA0E-998496CE793E' | |----------------------------------------| | a5f35b56-49a2-4437-ba0e-998496ce793e | +----------------------------------------+
자동 완성 사용하기¶
여러 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
모든 연결 매개 변수에 대한 자세한 내용은 연결 매개 변수 참조 를 참조하십시오.
세션에서 실행하기(!source
또는 !load
명령)¶
Snowflake에 연결한 후 SQL 스크립트를 실행하려면 세션에서 !source
(또는 !load
) 명령을 실행합니다.
예:
user#> !source example.sql
데이터 내보내기¶
다음 구성 옵션 을 사용하여 쿼리 결과를 정의된 형식의 파일로 출력합니다.
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
- 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
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]>
예:
jdoe#DATALOAD@BOOKS_DB.PUBLIC>
프롬프트 예¶
위의 예를 계속하여, 명령줄에서 실행된 다음 !set
명령은 역할 토큰을 추가하고 토큰의 순서를 user
와 role
, database
와 schema
, 그다음은 warehouse
로 변경합니다. 또한, 각 토큰의 구분 기호를 마침표(.
)로 변경하고 토큰이 다른 색상을 사용하도록 설정합니다.
jdoe#DATALOAD@BOOKS_DB.PUBLIC> !set prompt_format=[#FF0000][user].[role].[#00FF00][database].[schema].[#0000FF][warehouse]>
이 예의 세션에서 표시되는 프롬프트는 다음과 같습니다.
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;
!connect
¶
SnowSQL은 !connect <연결_이름>
을 사용하여 여러 세션(즉, 연결)을 지원합니다.
connection_name
과 관련된 연결 매개 변수/옵션은 SnowSQL 구성 파일의 해당[connections.<연결_이름>]
섹션에 저장됩니다.매개 변수/옵션이
[connections.<연결_이름>]
섹션에 지정되지 않은 경우 지정되지 않은 매개 변수는 기본적으로[connections]
아래에 매개 변수로 설정됩니다.
연결할 때 연결이 연결 스택에 추가되고 종료하면 이전 연결로 돌아갑니다. 연결 개수에 관계없이, 종료하면 모든 연결이 종료됩니다.
예:
구성 파일:
[connections.my_example_connection] ...
명령 파일:
user#> !connect my_example_connection
!define
¶
다음 형식을 사용하여 변수를 지정된 값으로 설정합니다.
!define <변수_이름>=<변수_값>
이름과 값은 공백을 사용하지 않고 1개의 =
로 구분해야 합니다. 변수에 사용할 수 있는 유효한 문자는 다음과 같습니다.
0-9a-zA-Z_
변수 정의 및 사용에 대한 자세한 내용은 변수 사용하기 를 참조하십시오.
!edit
¶
editor
연결 매개 변수를 사용하여 설정한 편집기를 엽니다(편집기가 설정되지 않은 경우 기본값은 vim
). 이 명령은 쿼리를 인자로 허용합니다. 인자가 전달되지 않으면 마지막으로 실행된 쿼리가 열립니다.
참고
편집기를 종료하기 전 또는 종료하는 동안 저장해야 하며, 그렇지 않으면 편집기에서 입력/수정한 텍스트가 저장되지 않습니다.
!exit
, !disconnect
¶
현재 연결을 종료하고 이 연결이 마지막 연결이면 SnowSQL을 종료합니다.
!help
, !helps
, !h
¶
SnowSQL 명령의 도움말을 표시합니다.
!options
, !opts
¶
모든 SnowSQL 구성 옵션 및 현재 설정 값의 목록을 반환합니다. 이러한 옵션은 현재 SnowSQL 세션에서 !set
명령을 사용하여 설정할 수 있습니다.
!pause
¶
실행 중인 쿼리를 일시 중지합니다. 계속하려면 <Enter> 키를 누릅니다.
!print
¶
현재 스풀링 중인 파일과 화면에 지정된 텍스트를 인쇄합니다.
예:
user#> !print Include This Text
!queries
¶
지정된 필터와 일치하는 모든 쿼리를 나열합니다. 기본 필터는 session
및 amount=25
이며 현재 세션에서 25개의 가장 최근 쿼리를 반환합니다.
예:
이 현재 세션에서 실행된 가장 최근 쿼리 25개를 반환합니다.
!queries session
계정에서 실행된 가장 최근 쿼리 20개를 반환합니다.
!queries amount=20
실행에 200 밀리초 이상이 소요된 계정에서 실행된 가장 최근 쿼리 20개를 반환합니다.
!queries amount=20 duration=200
지정된 웨어하우스에서 실행된 가장 최근 쿼리 25개를 반환합니다.
!queries warehouse=mywh
이 명령은 반환된 각 쿼리 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 | +---+
!quit
, !q
(또한 CTRL + d)¶
모든 연결을 종료하고 SnowSQL을 종료합니다.
!rehash
¶
자동 완성 토큰을 다시 동기화합니다.
일반적인 사용에는 자동 완성 토큰을 다시 동기화할 필요가 없습니다. 그러나 특정 상황에서는 서버 측 토큰을 강제로 업데이트하는 것이 유용할 수 있습니다(예: 다른 세션에서 새 사용자 정의 함수가 생성되는 경우).
!result
¶
완료된 쿼리의 결과를 반환합니다(쿼리 ID로 지정됨). 쿼리 IDs는 웹 인터페이스의 History 페이지에서 또는 !queries
명령을 사용하여 얻을 수 있습니다.
쿼리가 아직 실행 중인 경우 명령은 쿼리가 완료될 때까지 대기합니다.
예:
user#> !result 77589bd1-bcbf-4ec8-9ebc-6c949b00614d;
!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 | ... +-----------------------+-------------------+
중요
옵션과 값 사이에는 공백을 사용할 수 없습니다. 일부 옵션은 정의된 값 세트를 지원하며, 제공된 값이 지원되지 않으면 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
!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 | +---+
우선 !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
!system
¶
셸 명령을 실행합니다.
!system <명령>
다음 예에서는 사용자의 홈 디렉터리에서 ls
명령을 실행합니다.
user#> !system ls ~
!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 | +-----+
변수 설정에 대한 자세한 내용은 이 항목의 변수 사용하기 섹션을 참조하십시오.
문제 해결¶
오류 메시지: Variable is not defined
¶
- 원인:
SnowSQL에서 명령을 실행할 때 이 오류 메시지가 나타나는 경우 CREATE FUNCTION 명령 내의 앰퍼샌드(
&
)가 그 원인일 수 있습니다. (앰퍼샌드는 SnowSQL 변수 대체 문자입니다.) 예를 들어, SnowSQL에서 다음을 실행하면 이 오류가 발생합니다.create function mask_bits(...) ... as $$ var masked = (x & y); ... $$;
이 오류는 함수가 호출될 때가 아니라 생성될 때 발생합니다.
- 해결책:
SnowSQL에서 변수 대체를 사용하지 않으려는 경우 다음 명령을 실행하여 변수 대체를 명시적으로 비활성화할 수 있습니다.
!set variable_substitution=false;
변수 대체에 대한 자세한 내용은 변수 사용하기 을 참조하십시오.