SnowSQL에서 |sf-cli|로 마이그레이션하기

참고

Snowflake CLI 마이그레이션 지원은 아직 개발 중입니다. 그동안 Snowflake는 이 지침을 통해 SnowSQL에서 마이그레이션할 것을 권장합니다.

이 가이드에서는 기존 SnowSQL 연결과 환경 변수를 원활하게 이전할 수 있도록 SnowSQL에서 |sf-cli|로 마이그레이션하는 방법에 대한 지침을 제공합니다.

마이그레이션 단계

SnowSQL에서 |sf-cli|로 마이그레이션하려면 다음 단계를 따릅니다.

  1. 원하는 방법으로 :ref:`Snowflake CLI를 설치<label-cli-migration-install>`합니다.

  2. 연결을 가져옵니다.

  3. 선택적으로 환경 변수에 대해 제안된 변경 사항을 확인합니다.

  4. 선택적으로 snowsql 셸 명령을 snow sql 셸 명령에 매핑하는 별칭을 만듭니다.

Snowflake CLI 소프트웨어 설치하기

SnowSQL과 마찬가지로, |sf-cli|는 바이너리 설치 관리자 및 :ref:`pip<label-snowcli_install_pip>`를 사용하여 소프트웨어를 설치할 수 있습니다.

현재 |sf-cli|는 다음 플랫폼을 지원합니다.

현재 Snowflake CLI는 다음 플랫폼을 지원하지 않습니다.

  • Linux bash 설치 관리자

Snowflake CLI 설치에 대한 자세한 내용은 Snowflake CLI 설치하기 섹션을 참조하세요.

SnowSQL 연결 및 설정 마이그레이션하기

|sf-cli|는 SnowSQL에서 |sf-cli|로의 전환 프로세스를 간소화하기 위해 snow helpers 명령 그룹을 제공합니다. 기존 연결과 환경 변수를 쉽게 가져오려면 다음 명령을 사용합니다.

SnowSQL를 사용하여 인라인 SQL 문을 실행하거나 파일을 실행하지만 모든 스크립트를 편집하고 싶지 않은 경우 snowsql`을 :codenowrap:`snow sql 명령에 매핑하는 별칭을 만드는 것이 좋습니다. 예를 들어, Unix 계열 시스템에서는 다음 명령을 사용합니다.

alias snowsql='snow sql'
Copy

이 별칭을 사용하면 기존 스크립트를 |sf-cli|와 함께 사용할 수 있습니다.

고급 SnowSQL 사용자인 경우, 일반적으로 SnowSQL 구성에 사용되는 옵션과 관련된 비호환성 메시지가 표시될 수 있습니다. |sf-cli|는 모든 SnowSQL 구성 옵션을 사용하지 않기 때문에 스크립트 복사본을 만들고 호환되지 않는 옵션을 제거해야 할 수도 있습니다.

SnowSQL로 롤백하기

|sf-cli|는 자체 구성 파일을 사용하므로 SnowSQL을 계속 사용할 수 있습니다. SnowSQL 및 |sf-cli|를 모두 설치하고 독립적으로 실행할 수 있습니다. 위에서 설명한 대로 별칭을 설정한 경우 SnowSQL에 대해 snowsql 명령을 사용하려면 별칭을 제거해야 합니다.

구성 마이그레이션하기

구성 파일의 차이점

  • SnowSQL

    SnowSQL는 구성 파일<label-configuring_snowsql>`에 의해 구성됩니다. 이 파일은 연결 구성, 도구의 다양한 설정, SQL 쿼리에서 사용할 수 있는 변수를 포함하는 TOML 형식의 파일입니다. 구성을 여러 위치로 분할할 수 있으므로 시스템 전체의 기본값을 지정하고 다른 사용자에 대해 이를 재정의할 수 있습니다. :codenowrap:–config` 명령줄 옵션을 지정하여 사용자 지정 위치에서 구성을 지정할 수도 있습니다. 자세한 내용은 연결 매개 변수 참조 섹션을 참조하십시오.

  • Snowflake CLI

    또한 |sf-cli|에는 도구의 연결 구성 및 설정을 지정하는 자체 TOML 구성 파일</developer-guide/snowflake-cli/connecting/configure-cli>`이 있습니다. SQL 쿼리에서 나중에 사용하기 위해 변수를 정의할 수 없습니다. |sf-cli|의 변수는 :doc:`프로젝트 정의 파일</developer-guide/snowflake-cli/project-definitions/use-sql-variables>`의 프로젝트 수준에서 정의됩니다. |sf-cli|는 기본적으로 사용자의 홈 디렉터리에 있는 구성 파일을 하나만 사용합니다. :codenowrap:–config` 명령줄 옵션을 지정하여 사용자 지정 위치에서 구성을 지정할 수도 있습니다. 자세한 내용은 snow 명령 참조를 참조하십시오.

Snowflake CLI 기본 구성 파일 찾기

기본값 |sf-cli|의 위치 구성은 시스템에 따라 다르며, :ref:`label-cli_config_locations`에 지정된 순서에 따라 결정됩니다.

  • Snowflake CLI 설치에 대한 default_config_file_path 매개 변수 값을 찾으려면 다음과 같이 snow --info 명령을 실행합니다.

    snow --info
    
    Copy
    [
      ...
    
      {
          "key": "default_config_file_path",
          "value": "/<user_home>/.snowflake/config.toml"
      },
    
      ...
    ]
    

SnowSQL에서 연결 가져오기

유용한 링크:

snow helpers import-snowsql-connections 명령으로 모든 SnowSQL 연결을 가져올 수 있습니다. 자세한 내용은 SnowSQL에서 연결 가져오기snow helpers import-snowsql-connections 명령 참조를 참조하세요.

기본 연결 구성을 수동으로 마이그레이션하기

snow helpers import-snowsql-connections 명령을 사용하여 연결을 가져오지 않도록 선택하는 경우 기본 연결을 수동으로 마이그레이션할 수 있습니다.

기본 연결 지정의 차이점은 다음과 같습니다.

  • SnowSQL

    기본 연결은 SnowSQL:ref:구성 파일<label-configuring_snowsql>`에서 구성되며, 연결 설정은 :ref:`[connections]<label-connecting_default_connection_settings> 섹션에서 직접 정의됩니다.

  • Snowflake CLI

    기본 연결은 Snowflake CLI 구성 파일</developer-guide/snowflake-cli/connecting/configure-cli>`에서 :codenowrap:`default_connection_name`이라는 명명된 연결로 구성되며, 구성의 최상위 수준에서 설정됩니다(:ref:`label-cli_set_default_connection 참조). snow connection set-default 명령을 사용하여 기본 연결을 변경할 수 있습니다.

기본적으로 SnowSQL 및 Snowflake CLI 모두 기본 연결 구성을 사용하여 Snowflake에 연결합니다. SnowSQL에서 구성한 경우 다음과 같이 이 구성을 Snowflake CLI 구성 파일로 마이그레이션해야 합니다.

  1. SnowSQL 구성 파일을 열고 [connections] 섹션에서 기본 연결 매개 변수를 찾습니다. |sf-cli|에 연결을 추가할 때 연결 매개 변수의 값이 필요합니다.

  2. |sf-cli|에 연결을 추가하려면 다음 방법 중 하나를 사용합니다.

    • 다음과 같이 Snowflake CLI 구성 파일을 수동으로 편집합니다.

      1. Snowflake CLI 구성 파일을 엽니다.

      2. codenowrap:[connections.your_connection_name] 섹션을 추가하고 SnowSQL 구성 파일에서 기본 구성 세부 정보를 복사하여 붙여넣습니다.

      3. 다음과 같이 매개 변수의 이름을 변경합니다.

        • :codenowrap:`accountname`을 :codenowrap:`account`로

        • :codenowrap:`username`을 :codenowrap:`user`로

        • :codenowrap:`dbname`을 :codenowrap:`database`로

        • :codenowrap:`schemaname`을 :codenowrap:`schema`로

        • :codenowrap:`warehousename`을 :codenowrap:`warehouse`로

        • :codenowrap:`rolename`을 :codenowrap:`role`로

      4. 구성 파일의 최상위 수준에서 default_connection_name = "your_connection_name" 설정을 추가하거나 설정합니다(기본 연결 설정 참조).

    • snow connection addsnow connection set-default 명령을 사용합니다. 자세한 내용은 snow connection 명령을 사용한 Snowflake로의 연결 관리 또는 추가 섹션을 참조하십시오.

명명된 연결 구성을 수동으로 마이그레이션하기

snow helpers import-snowsql-connections 명령을 사용하지 않는 경우 연결을 가져오기 위해 수동으로 마이그레이션할 수 있습니다.

명명된 연결 지정의 차이점은 다음과 같습니다.

  • SnowSQL

    명명된 연결은 SnowSQL:ref:구성 파일<label-connecting_named_connection>`에서 구성됩니다. 명명된 연결에는 고유한 :codenowrap:`[connections.your_connection_name] 섹션이 있습니다.

  • Snowflake CLI

    Snowflake CLI는 :ref:`명명된 연결 구성<label-snowcli_define_connections>`과 거의 동일한 형식을 사용합니다. SnowSQL 구성에서 복사하고 기본 연결에 지정된 대로 매개 변수의 이름을 바꿉니다.

기본적으로 SnowSQL 및 Snowflake CLI 모두 명명된 연결을 사용하여 Snowflake에 연결할 수 있도록 합니다. SnowSQL에서 명명된 연결을 계속 사용하려면 Snowflake CLI 구성 파일로 마이그레이션해야 합니다.

  1. SnowSQL 구성 파일을 열고 [connections.your_connection_name] 섹션을 찾습니다. :ref:`연결<label-snowsql_migration_migrate_connections>`을 |sf-cli|에 추가하는 경우 연결 매개 변수의 값이 필요합니다.

  2. |sf-cli|에 연결을 추가하려면 다음 방법 중 하나를 사용합니다.

    • 다음과 같이 Snowflake CLI 구성 파일을 수동으로 편집합니다.

      1. Snowflake CLI 구성 파일을 엽니다.

      2. codenowrap:[connections.your_connection_name] 섹션을 추가하고 SnowSQL 구성 파일에서 기본 구성 세부 정보를 복사하여 붙여넣습니다.

      3. 다음과 같이 매개 변수의 이름을 변경합니다.

        • :codenowrap:`accountname`을 :codenowrap:`account`로

        • :codenowrap:`username`을 :codenowrap:`user`로

        • :codenowrap:`dbname`을 :codenowrap:`database`로

        • :codenowrap:`schemaname`을 :codenowrap:`schema`로

        • :codenowrap:`warehousename`을 :codenowrap:`warehouse`로

        • :codenowrap:`rolename`을 :codenowrap:`role`로

    • snow connection add 명령을 사용합니다. 자세한 내용은 snow connection 명령을 사용한 Snowflake로의 연결 관리 또는 추가 섹션을 참조하십시오.

로그 구성하기

유용한 링크:

|sf-cli|에 대한 로깅을 수동으로 구성하려면 로깅 구성 설명서를 참조하세요.

변수 마이그레이션하기

유용한 링크:

|sf-cli|는 구성 파일에서 변수 지정을 지원하지 않습니다. 대신, 변수를 특정 프로젝트와 연결하는 보다 프로젝트 중심의 접근 방식을 사용합니다. |sf-cli|를 사용하면 snowflake.yml프로젝트 정의 파일</developer-guide/snowflake-cli/project-definitions/about>`에서 변수를 정의할 수 있습니다. 그런 다음 :doc:/developer-guide/snowflake-cli/project-definitions/about`에 설명된 대로 SQL 쿼리에서 이러한 변수를 사용할 수 있습니다.

  • 프로젝트에 대한 변수를 정의하려면 env 섹션을 프로젝트의 snowflake.yml 파일에 추가하고 쿼리에 사용할 모든 변수를 포함합니다.

다음 예제에서는 데이터베이스`역할`이라는 두 개의 변수를 정의합니다.

definition_version: 2
env:
  database: "dev"
  role: "eng_rl"
Copy

수동으로 환경 변수 마이그레이션하기

SnowSQL에서, 연결을 시작할 때 명령줄 매개 변수를 지정하는 대신 환경 변수(예: $SNOWSQL_ACCOUNT$SNOWSQL_DATABASE)를 사용할 수 있습니다. 이 접근 방식은 기본 연결 구성을 지정하는 또 다른 방법을 제공합니다. |sf-cli|는 동일한 기능을 제공하지만 이러한 매개 변수에 대해 다른 이름을 사용하며 환경 변수를 통해 더 많은 구성 매개 변수를 재정의할 수 있습니다. 환경 변수를 사용하여 Snowflake에 연결하는 경우 자세한 내용은 :ref:`환경 변수를 사용하여 Snowflake에 연결하기<label-snowcli_environment_creds>` 섹션을 참조하세요. 또한 |sf-cli| 설명서의 환경 변수 구성 가능성에 대한 정보를 참조하세요.

Snowflake에 연결하기

유용한 링크:

구성을 마이그레이션했다고 가정하면 다음을 포함하여 SnowSQL에서 사용한 방법과 유사한 방법을 사용하여 |sf-cli|에서 Snowflake에 연결할 수 있습니다.

기본 연결 사용하기

  • 구성 파일에 정의된 기본 구성을 사용하여 연결하려면 다음을 수행합니다.

    • SnowSQL

      snowsql -q "select 1"
      
      Copy
    • Snowflake CLI

      snow sql -q "select 1"
      
      Copy

명령줄 옵션과 함께 연결 사용하기

  • 구성 파일에 정의된 기본 구성을 사용하여 연결하고 명령줄 옵션으로 매개 변수를 재정의하려면 다음을 수행합니다.

    • SnowSQL

      snowsql --username myname -q "select 1"
      
      Copy
    • Snowflake CLI

      snow sql --username myname -q "select 1"
      
      Copy

      가능한 명령줄 옵션 목록은 snow sql 섹션을 참조하세요. 일부 옵션은 SnowSQL의 이름과 이름이 다릅니다.

명명된 구성 사용하기

  • 구성 파일에 정의된 명명된 구성을 사용하여 연결하려면 다음을 수행합니다.

    • SnowSQL

      snowsql -c dev -q "select 1"
      
      Copy
    • Snowflake CLI

      snow sql -c dev -q "select 1"
      
      Copy

명령줄 옵션만 사용하기

  • 구성된 연결 대신 명령줄 옵션만 사용하여 연결하려면 다음을 수행합니다.

    • SnowSQL

      snowsql \
        --accountname myaccount \
        --username myuser \
        --authenticator SNOWFLAKE_JWT \
        --private-key-path "path_to_my_key" \
        -q "select 1"
      
      Copy
    • Snowflake CLI

      snow sql \
        --temporary-connection \
        --accountname myaccount \
        --username myuser \
        --authenticator SNOWFLAKE_JWT \
        --private-key-path "path_to_my_key" \
        -q "select 1"
      
      Copy

      |sf-cli|에는 이 메서드에 대한 --temporary-connection 옵션이 필요합니다.

환경 변수 사용하기

  • 기본 연결을 사용하여 연결하고 일부 매개 변수를 환경 변수로 전달하려면 다음을 수행합니다.

    • SnowSQL

      export SNOWSQL_USER=myuser
      snowsql -q "select 1"
      
      Copy
    • Snowflake CLI

      export SNOWFLAKE_USER=myuser
      snow sql -q "select 1"
      
      Copy

      환경 변수의 이름은 다를 수 있습니다. 자세한 내용은 Snowflake 자격 증명에 환경 변수 사용 섹션을 참조하십시오.

연결, 환경 변수, 명령줄 옵션을 혼합하여 사용하기

  • 명명된 연결, 환경 변수 및 명령줄 옵션과 함께 혼합 접근 방식을 사용하여 연결하려면 다음을 수행합니다.

    • SnowSQL

      export SNOWSQL_USER=myuser
      snowsql -c dev --accountname myaccount -q "select 1"
      
      Copy
    • Snowflake CLI

      export SNOWFLAKE_USER=myuser
      snow sql -c dev --accountname myaccount -q "select 1"
      
      Copy

      기본 연결과 명명된 연결 모두에서 이 방법을 사용할 수 있습니다.

SQL 쿼리 실행하기

유용한 링크:

다양한 입력에서 SQL 쿼리 실행하기

|sf-cli|를 사용하면 SnowSQL에서 처리하는 입력과 유사한 입력을 사용하여 SQL 쿼리를 실행할 수 있습니다. 다음 예제에서는 다양한 입력을 사용하여 SQL 쿼리를 실행합니다.

  • 명령줄 매개 변수를 사용하여 쿼리를 실행합니다.

    • SnowSQL

      snowsql -q "select 1"
      
      Copy
    • Snowflake CLI

      snow sql -q "select 1"
      
      Copy
  • 파일에서 쿼리를 실행합니다.

    • SnowSQL

      snowsql -f test.sql
      
      Copy
    • Snowflake CLI

      snow sql -f test.sql
      
      Copy
  • 표준 입력에서 쿼리를 실행합니다.

    • SnowSQL

      cat test.sql | snowsql
      
      Copy
    • Snowflake CLI

      cat test.sql | snow sql --stdin
      
      Copy

JSON 파일에 쿼리 결과 저장하기

|sf-cli|는 현재 모든 :ref:`SnowSQL 출력 형식 지정 옵션<label-snowsql_export_data>`을 지원하지 않습니다. |sf-cli|를 사용하면 쿼리 결과를 형식이 지정된 테이블이나 JSON으로 저장할 수 있습니다. CSV 및 기타 형식은 아직 사용할 수 없지만, `jq<https://jqlang.org/>`_와 같은 외부 도구를 사용하여 JSON의 데이터를 다른 형식으로 변환할 수 있습니다.

  • SnowSQL

    snowsql \
      -f test.sql \
      -o "output_format=json" \
      -o "output_file=result.json"
    
    Copy
  • Snowflake CLI

    snow sql -f test.sql --format json > result.json
    
    Copy

변수를 사용하여 쿼리 실행하기

SnowSQL 및 |sf-cli|를 사용하면 쿼리에서 변수를 사용할 수 있습니다. SnowSQL를 사용하면 명령줄 옵션, 구성 파일 및 몇 가지 기본 제공 변수<label-snowsql_variables>`를 통해 변수를 사용할 수 있습니다. |sf-cli|는 구성 파일에서 변수를 지원하거나 기본 제공 변수 사용을 지원하지 않지만, 명령줄 옵션으로 매개 변수를 지정하고 프로젝트 정의 파일에서 변수를 지정하는 기능은 지원합니다. SnowSQL 구성 파일 변수 마이그레이션에 대한 자세한 내용은 :ref:`label-snowsql_migration_variables 섹션을 참조하세요.

SnowSQL의 구성에서 변수를 마이그레이션한 후에는 명령줄 옵션 및 프로젝트 정의의 변수를 사용하여 Snowflake CLI 쿼리를 실행할 수 있습니다.

변수를 사용하는 경우 SnowSQL 및 Snowflake CLI 간의 중요한 차이점에 유의합니다.

  • 변수 대체에 서로 다른 구문을 사용합니다. SnowSQL은 &variable 또는 &{variable} 구문을 사용하며, |sf-cli|는 <% variable %> 구문을 사용합니다. SnowSQL의 구문은 현재 지원되지만 사용 중단되었습니다.

  • |sf-cli|는 변수 대체를 자동으로 활성화하므로 SnowSQL로 명시적으로 활성화할 필요가 없습니다.

  • Snowflake CLI 프로젝트 정의 파일의 변수 이름에는 다음과 같이 ctx.env 접두사가 있어야 합니다.

다음 예제는 변수를 사용하여 SQL 쿼리를 실행할 때의 차이점을 보여줍니다.

  • 명령줄 옵션에서 변수를 사용하여 쿼리를 실행합니다. 여기서 :codenowrap:`x`는 변수 이름입니다.

    • SnowSQL

      snowsql \
        -o variable_substitution=true \
        -q "select &x" \
        -D x=1
      
      Copy
    • Snowflake CLI

      snow sql \
        -q "select <% x %>" \
        -D x=1
      
      Copy
    • |sf-cli|(빠른 마이그레이션을 위해 사용 중단된 구문 사용)

      snow sql \
        -q "select &x" \
        -D x=1
      
      Copy
  • SnowSQL 구성 및 Snowflake CLI 프로젝트 정의 파일에서 변수를 사용하여 쿼리 실행을 비교합니다.

    • SnowSQL

      # save variables to config
      echo "[variables]
      xyz=Hello World" > custom_config
      
      
      # execute query
      snowsql \
        --config custom_config \
        -o variable_substitution=true \
        -q "select '&{xyz}'"
      
      Copy
    • Snowflake CLI

      # save variables to project definition
      echo "definition_version: 2
      env:
        xyz: Hello World" > snowflake.yml
      
      # execute query
      snow sql -q "select '<% ctx.env.xyz %>'"
      
      Copy
    • |sf-cli|(빠른 마이그레이션을 위해 사용 중단된 구문 사용)

      # save variables to project definition
      echo "definition_version: 2
      env:
        xyz: Hello World" > snowflake.yml
      
      
      # execute query
      snow sql -q "select '&{ctx.env.xyz}'"
      
      Copy

SnowSQL 및 |sf-cli|기능 패리티

다음 테이블에서는 SnowSQL 함수가 |sf-cli|에 통합되는 방법을 보여줍니다.

SnowSQL 및 |sf-cli|기능 패리티

SnowSQL 함수

Snowflake CLI 구현

.ini 형식의 전역 구성 파일(~/.snowsql/config).

구성 및 연결 파일은 TOML 형식을 사용하며, ~/.snowflake 디렉터리(Linux) 또는 사용자 HOME 디렉터리의 다른 하위 디렉터리(다른 OS 시스템)에 저장됩니다. 자세한 내용은 .toml 구성 파일의 위치 섹션을 참조하십시오.

Python용 Snowflake Connector에서 지원하는 모든 기능을 지원하는 명령줄 옵션을 통한 연결 구성.

|sf-cli|는 snow connection add 명령 참조에 설명된 대로 명령줄 옵션을 지원합니다.

--probe-connection 명령줄 옵션을 통한 연결 테스트. 이 옵션은 TLS/SSL 인증서 체인을 출력할 때 주로 사용됩니다.

현재 snow connection test 명령은 연결 프로브를 확인하지만 TLS 및 SSL 인증서 체인을 출력하지는 않습니다. Snowflake 지원을 위한 연결 진단 데이터를 생성할 수 있습니다.

user, account, private-key-path 매개 변수를 기반으로 JWT 토큰을 생성하고 표시하는 기능.

snow connection generate-jwt 명령을 사용합니다. 자세한 내용은 인증에 개인 키 파일 사용 섹션을 참조하십시오.

-f 또는 --filename FILE 옵션을 사용하여 파일에서 쿼리 실행.

snow sql [-f/--filename] file.sql 명령을 사용합니다.

-q 또는 --query TEXT 옵션을 사용하여 명령줄 입력에서 쿼리 실행.

snow sql [-q/--query] "<query-text>" 명령(예: snow sql -q "select emp_id FROM employees")을 사용합니다.

--variable db_key=$DB_KEY`와 같은 :codenowrap:–variable` 명령줄 옵션을 사용하여 변수를 제공하는 옵션으로 템플릿 쿼리.

|sf-cli|는 SQL 템플릿 및 snowflake.yml 프로젝트 정의 파일에서 SQL 변수를 지원합니다. 자세한 내용은 SQL 템플릿에 변수 사용하기snowflake.yml 프로젝트 정의 파일에 변수 저장하기 섹션을 참조하십시오.

대화형 SQL 셸 모드.

:ref:`대화형 모드<label-snowcli_sql_interactive_mode>`를 사용합니다. 비동기 쿼리에 대한 지원은 나중에 추가될 예정입니다.

다른 SQL 파일에서 하나 이상의 SQL 파일 포함 또는 소싱.

!source file1.sql;
!source file2.sql;
!source http://example.com/my.sql
Copy

|sf-cli|는 템플릿을 지원하는 중첩 SQL 스크립트를 지원합니다. 자세한 내용은 SQL 쿼리 명령으로 작업하기 섹션을 참조하십시오.

EXIT_ON_ERROR 오류 코드 표시.

--enhanced-exit-codes 명령줄 옵션을 사용하거나 SNOWFLAKE_ENHANCED_EXIT_CODES 환경 변수를 1`로 설정하여 모든 :codenowrap:`snow sql 명령에 대해 개선된 반환 코드를 전송합니다. 자세한 내용은 개선된 오류 코드 섹션을 참조하십시오.