Migração do SnowSQL para Snowflake CLI

Nota

O suporte à migração para o Snowflake CLI ainda está em desenvolvimento. Enquanto isso, o Snowflake recomenda que você migre do SnowSQL usando estas instruções.

Este guia fornece instruções para migrar do SnowSQL para o Snowflake CLI para ajudar você a migrar facilmente suas conexões e variáveis ​​de ambiente do SnowSQL existentes.

Etapas de migração

Para migrar do SnowSQL para o Snowflake CLI, siga estas etapas:

  1. Instale o Snowflake CLI com seu método preferido.

  2. Importe suas conexões.

  3. Opcionalmente, verifique se há alterações sugeridas para suas variáveis de ambiente.

  4. Opcionalmente, crie um alias que mapeie o comando shell snowsql para o comando shell snow sql.

Instalar o software Snowflake CLI

Dica

Links úteis:

Assim como o SnowSQL, o Snowflake CLI fornece instaladores binários. Além disso, ele também permite que você instale o software usando homebrew e pip.

Atualmente, o Snowflake CLI aceita as seguintes plataformas:

Atualmente, o Snowflake CLI não aceita as seguintes plataformas:

  • Instalador bash do Linux

Para obter mais informações sobre a instalação do Snowflake CLI, consulte Instalação do Snowflake CLI.

Migrar suas conexões e configurações do SnowSQL

O Snowflake CLI fornece um grupo de comandos snow helpers para simplificar o processo de transição do SnowSQL para o Snowflake CLI. Use estes comandos para importar facilmente suas conexões existentes e suas variáveis ​​de ambiente:

Se você usar o SnowSQL para executar instruções SQL em linha ou executar arquivos, mas não quiser editar todos os seus scripts, considere criar um alias que mapeie snowsql para o comando snow sql. Por exemplo, em sistemas do tipo Unix, use o seguinte comando:

alias snowsql='snow sql'
Copy

Com esse alias, você pode usar seus scripts existentes com o Snowflake CLI.

Observe que, se você for um usuário mais avançado do SnowSQL, poderá ocasionalmente encontrar mensagens de incompatibilidade, que normalmente estão relacionadas às opções usadas para configurar o SnowSQL. Como o Snowflake CLI não usa todas as opções de configuração do SnowSQL, talvez seja necessário fazer cópias dos seus scripts e remover essas opções incompatíveis.

Reverter para o SnowSQL

O Snowflake CLI usa seus próprios arquivos de configuração, então você pode continuar a usar o SnowSQL. Você pode instalar o SnowSQL e o Snowflake CLI e executá-los independentemente. Se você definir um alias, conforme descrito acima, deverá removê-lo para usar o comando snowsql para o SnowSQL.

Migrar suas configurações

Dica

Links úteis:

Diferenças nos arquivos de configuração

  • SnowSQL

    O SnowSQL é configurado por seu arquivo de configuração, que é um arquivo no formato TOML que contém configurações de conexão, diversas configurações da ferramenta e variáveis ​​que podem ser usadas em consultas SQL. As configurações podem ser divididas em vários locais, o que permite definir padrões para todo o sistema e substituí-los para diferentes usuários. Você também pode especificar configurações de locais personalizados especificando a opção de linha de comando --config. Para obter mais informações, consulte Referência de parâmetros de conexão.

  • Snowflake CLI

    O Snowflake CLI também possui seu próprio arquivo de configuração TOML que especifica as configurações de conexão e as definições da ferramenta. Ele não permite definir variáveis ​​para uso posterior em consultas SQL. As variáveis no Snowflake CLI são definidas no nível do projeto em arquivos de definição de projeto. O Snowflake CLI usa apenas um arquivo de configuração que, por padrão, está localizado no diretório inicial do usuário. Você também pode especificar configurações de locais personalizados especificando a opção de linha de comando --config. Para mais informações, consulte a referência de comando snow.

Encontrar o arquivo de configuração padrão Snowflake CLI

A localização da configuração padrão do Snowflake CLI depende do seu sistema e é determinada pela ordem especificada no Local do arquivo de configuração .toml.

  • Para encontrar o valor do parâmetro default_config_file_path para a sua instalação do Snowflake CLI, execute o comando snow --info conforme mostrado:

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

Importação de conexões de SnowSQL

Dica

Links úteis:

Você pode importar todas as suas conexões SnowSQL com o comando snow helpers import-snowsql-connections. Para obter mais informações, consulte Importação de conexões de SnowSQL e a referência do comando snow helpers import-snowsql-connections.

Migrar manualmente a configuração de conexão padrão

Se você optar por não importar conexões usando o comando snow helpers import-snowsql-connections, poderá migrar a conexão padrão manualmente.

As diferenças na especificação da conexão padrão incluem o seguinte:

  • SnowSQL

    A conexão padrão é configurada no arquivo de configuração do SnowSQL, e as configurações de conexão são definidas diretamente na seção [connections].

  • Snowflake CLI

    A conexão padrão é configurada no arquivo de configuração do Snowflake CLI como uma conexão com o nome default_connection_name, definido no nível superior da configuração (consulte Definição da conexão padrão). Você pode alterar a conexão padrão usando o comando snow connection set-default.

Por padrão, tanto o SnowSQL quanto o Snowflake CLI usam a configuração de conexão padrão para se conectar ao Snowflake. Se você o tiver configurado no SnowSQL, migre essa configuração para o arquivo de configuração do Snowflake CLI, da seguinte forma:

  1. Abra o arquivo de configuração do SnowSQL e encontre os parâmetros de conexão padrão na seção [connections]. Você precisará dos valores dos parâmetros de conexão ao adicionar a conexão ao Snowflake CLI.

  2. Para adicionar a conexão ao Snowflake CLI, use um dos seguintes métodos:

    • Edite manualmente o arquivo de configuração do Snowflake CLI da seguinte forma:

      1. Abra o arquivo de configuração do Snowflake CLI.

      2. Adicione uma seção [connections.your_connection_name] e copie/cole os detalhes da configuração padrão do arquivo de configuração do SnowSQL.

      3. Altere os nomes dos seguintes parâmetros, conforme mostrado:

        • accountname para account

        • username para user

        • dbname para database

        • schemaname para schema

        • warehousename para warehouse

        • rolename para role

      4. Adicione ou defina a configuração default_connection_name = "your_connection_name" no nível superior do arquivo de configuração (consulte Definição da conexão padrão).

    • Use os comandos snow connection add e snow connection set-default. Para obter mais informações, consulte Gerencie ou adicione suas conexões ao Snowflake com os comandos snow connection.

Migrar manualmente suas configurações de conexão nomeada

Se você não usar o comando snow helpers import-snowsql-connections para importar suas conexões, poderá migrá-las manualmente.

As diferenças na especificação de conexões nomeadas incluem o seguinte:

  • SnowSQL

    As conexões nomeadas são configuradas no arquivo de configuração do SnowSQL. Cada conexão nomeada tem sua própria seção [connections.your_connection_name].

  • Snowflake CLI

    O Snowflake CLI usa quase o mesmo formato para configurar conexões nomeadas. Você pode copiá-las da configuração do SnowSQL e renomear os parâmetros conforme especificado na conexão padrão.

Por padrão, o SnowSQL e o Snowflake CLI permitem que você use uma conexão nomeada para se conectar ao Snowflake. Se desejar continuar usando essas conexões nomeadas no SnowSQL, você deve migrá-las para o arquivo de configuração do Snowflake CLI:

  1. Abra o arquivo de configuração do SnowSQL e localize as seções [connections.your_connection_name]. Você precisa dos valores dos parâmetros de conexão ao adicionar as conexões ao Snowflake CLI.

  2. Para adicionar a conexão ao Snowflake CLI, use um dos seguintes métodos:

    • Edite manualmente o arquivo de configuração do Snowflake CLI da seguinte forma:

      1. Abra o arquivo de configuração do Snowflake CLI.

      2. Adicione uma seção [connections.your_connection_name] e copie/cole os detalhes da configuração padrão do arquivo de configuração do SnowSQL.

      3. Altere os nomes dos seguintes parâmetros, conforme mostrado:

        • accountname para account

        • username para user

        • dbname para database

        • schemaname para schema

        • warehousename para warehouse

        • rolename para role

    • Use o comando snow connection add. Para obter mais informações, consulte Gerencie ou adicione suas conexões ao Snowflake com os comandos snow connection.

Configurar logs

Dica

Links úteis:

Para configurar manualmente o registro em log para o Snowflake CLI, consulte a documentação Configuração do registro em log.

Migrar suas variáveis

Dica

Links úteis:

O Snowflake CLI não aceita a especificação de variáveis ​​no arquivo de configuração. Em vez disso, ele usa uma abordagem mais focada em projetos, que associa variáveis ​​a projetos específicos. O Snowflake CLI permite definir variáveis ​​em arquivos de definição de projeto snowflake.yml. Você pode então usar essas variáveis ​​em consultas SQL, conforme descrito em Sobre arquivos de definição de projeto.

  • Para definir variáveis ​​para o seu projeto, adicione uma seção env ao arquivo snowflake.yml do projeto e inclua as variáveis ​​que você queira usar em suas consultas.

O exemplo a seguir define duas variáveis: database e role:

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

Migrar manualmente suas variáveis ​​de ambiente

Dica

Links úteis:

No SnowSQL, você pode usar variáveis ​​de ambiente (como $SNOWSQL_ACCOUNT e $SNOWSQL_DATABASE) em vez de especificar parâmetros de linha de comando ao iniciar uma conexão. Essa abordagem oferece outra maneira de especificar configurações de conexão padrão. O Snowflake CLI oferece a mesma funcionalidade, mas usa nomes diferentes para esses parâmetros e permite que você substitua muitos outros parâmetros de configuração por meio de variáveis ​​de ambiente. Se você estiver usando variáveis ​​de ambiente para se conectar ao Snowflake, para obter mais informações, consulte Conexão ao Snowflake com variáveis ​​de ambiente. Consulte também informações sobre as possibilidades de configurar variáveis ​​de ambiente na documentação do Snowflake CLI.

Conexão com o Snowflake

Dica

Links úteis:

Supondo que tenha migrado sua configuração, você pode se conectar ao Snowflake a partir do Snowflake CLI usando métodos semelhantes aos usados ​​pelo SnowSQL, incluindo os seguintes:

Usar a conexão padrão

  • Para conectar-se usando a configuração padrão definida no seu arquivo de configuração:

    • SnowSQL

      snowsql -q "select 1"
      
      Copy
    • Snowflake CLI

      snow sql -q "select 1"
      
      Copy

Usar uma conexão com opções de linha de comando

  • Para conectar-se usando a configuração padrão definida no seu arquivo de configuração e substituir parâmetros por opções de linha de comando:

    • SnowSQL

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

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

      Para obter uma lista de possíveis opções de linha de comando, consulte snow sql. Observe que algumas opções têm nomes diferentes daqueles no SnowSQL.

Usar uma configuração nomeada

  • Para conectar-se usando uma configuração nomeada definida no seu arquivo de configuração:

    • SnowSQL

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

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

Usar apenas opções de linha de comando

  • Para conectar-se usando apenas opções de linha de comando em vez de uma conexão configurada:

    • 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

      Observe que o Snowflake CLI requer a opção --temporary-connection para esse método.

Usar variáveis ​​de ambiente

  • Para conectar-se usando a conexão padrão, passando alguns parâmetros como variáveis ​​de ambiente:

    • SnowSQL

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

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

      Observe que os nomes das variáveis ​​de ambiente podem ser diferentes. Para obter mais informações, consulte Use variáveis de ambiente para credenciais Snowflake.

Usar uma mistura de conexões, variáveis ​​de ambiente e opções de linha de comando

  • Para conectar-se usando uma abordagem mista com uma conexão nomeada, variáveis ​​de ambiente e opções de linha de comando:

    • 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

      Você pode usar este método com as conexões padrão e nomeada.

Execução de consultas SQL

Dica

Links úteis:

Executar consultas SQL a partir de várias entradas

O Snowflake CLI permite executar consultas SQL usando entradas semelhantes às manipuladas pelo SnowSQL. Os exemplos a seguir executam consultas SQL usando várias entradas.

  • Executar consultas usando parâmetros de linha de comando:

    • SnowSQL

      snowsql -q "select 1"
      
      Copy
    • Snowflake CLI

      snow sql -q "select 1"
      
      Copy
  • Executar consultas a partir de um arquivo:

    • SnowSQL

      snowsql -f test.sql
      
      Copy
    • Snowflake CLI

      snow sql -f test.sql
      
      Copy
  • Executar consultas a partir da entrada padrão:

    • SnowSQL

      cat test.sql | snowsql
      
      Copy
    • Snowflake CLI

      cat test.sql | snow sql --stdin
      
      Copy

Salvar resultados da consulta em um arquivo JSON

Atualmente, o Snowflake CLI não oferece suporte a todas as opções de formatação de saída do SnowSQL. O Snowflake CLI permite salvar os resultados da consulta como uma tabela formatada ou como JSON. Embora CSV e outros formatos ainda não estejam disponíveis, você pode usar ferramentas externas, como jq, para converter dados de outros formatos de 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

Executar consultas usando variáveis

Tanto o SnowSQL quanto o Snowflake CLI permitem usar variáveis ​​em consultas. O SnowSQL permite usar variáveis ​​de opções de linha de comando, a partir do arquivo de configuração, e usando algumas variáveis ​​internas. Embora o Snowflake CLI não aceite variáveis ​​no arquivo de configuração ou o uso de variáveis ​​internas, ele suporta a especificação de parâmetros com opções de linha de comando e a especificação de variáveis ​​em arquivos de definição de projeto. Para obter informações sobre como migrar as variáveis ​​do seu arquivo de configuração do SnowSQL, consulte Migrar suas variáveis.

Após migrar suas variáveis ​​da configuração do SnowSQL, você pode executar consultas do Snowflake CLI usando variáveis ​​tanto de opções de linha de comando quanto de definições de projeto.

Ao usar variáveis, observe as seguintes diferenças importantes entre o SnowSQL e o Snowflake CLI:

  • Eles usam sintaxes diferentes para substituições de variáveis. O SnowSQL usa a sintaxe &variable ou &{variable}, enquanto o Snowflake CLI usa <% variable %>. A sintaxe do SnowSQL atualmente é aceita, mas ficou obsoleta.

  • O Snowflake CLI habilita automaticamente a substituição de variáveis; portanto, você não precisa habilitá-la explicitamente como no SnowSQL.

  • Os nomes de variáveis ​​em arquivos de definição de projeto do Snowflake CLI devem ser prefixados com ctx.env, conforme mostrado:

Os exemplos a seguir mostram as diferenças ao executar consultas SQL com variáveis:

  • Execute uma consulta usando variáveis ​​em opções de linha de comando, em que x é o nome da variável:

    • SnowSQL

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

      snow sql \
        -q "select <% x %>" \
        -D x=1
      
      Copy
    • Snowflake CLI (usando sintaxe obsoleta para facilitar migrações rápidas)

      snow sql \
        -q "select &x" \
        -D x=1
      
      Copy
  • Execute uma consulta usando variáveis ​​em uma configuração do SnowSQL em comparação a um arquivo de definição de projeto 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
    • Snowflake CLI (usando sintaxe obsoleta para facilitar migrações rápidas)

      # 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

Paridade de recursos do SnowSQL e do Snowflake CLI

A tabela a seguir mostra como os recursos do SnowSQL são integrados ao Snowflake CLI.

Paridade de recursos do SnowSQL e do Snowflake CLI

Recurso do SnowSQL

Implementação de Snowflake CLI

Arquivo de configuração global (~/.snowsql/config) em um formato .ini.

Os arquivos de configuração e conexão usam o formato TOML e são armazenados no diretório ~/.snowflake (Linux) ou em outro subdiretório no diretório HOME do usuário (outros sistemas OS). Para obter mais informações, consulte Local do arquivo de configuração .toml.

A configuração de conexão por meio de opções de linha de comando oferece suporte a tudo o que o Snowflake Connector para Python oferece.

O Snowflake CLI oferece suporte às opções de linha de comando, conforme descrito na referência de comandos snow connection add.

Teste de conexão por meio da opção de linha de comando --probe-connection. Esta opção é utilizada principalmente para imprimir a cadeia de certificados TLS/SSL.

Atualmente, o comando snow connection test realiza a verificação de conexão, mas não imprime a cadeia de certificados TLS/SSL. Você pode gerar dados de diagnóstico de conexão para o suporte Snowflake.

Capacidade de gerar e exibir um token JWT com base nos parâmetros user, account e private-key-path.

Use o comando snow connection generate-jwt. Para obter mais informações, consulte Use um arquivo de chave privada para autenticação.

Execute uma consulta a partir de um arquivo usando as opções -f ou --filename FILE.

Use o comando snow sql [-f/--filename] file.sql.

Execute uma consulta a partir da entrada da linha de comando usando as opções -q ou --query TEXT.

Use o comando snow sql [-q/--query] "<query-text>"; por exemplo, snow sql -q "select emp_id FROM employees".

Modelagem de consulta com a opção de fornecer variáveis ​​usando a opção de linha de comando --variable, como --variable db_key=$DB_KEY.

O Snowflake CLI aceita variáveis ​​SQL em modelos SQL e em arquivos de definição de projeto snowflake.yml. Para obter mais informações, consulte Como usar ariáveis para modelos SQL e Armazenamento de variáveis no arquivo de definição de projeto snowflake.yml.

Modo de shell SQL interativo.

Use o modo interativo. O suporte para consultas assíncronas será adicionado posteriormente.

Inclua ou crie um ou mais arquivos SQL de outro arquivo SQL:

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

O Snowflake CLI aceita scripts SQL aninhados com suporte a modelos. Para obter mais informações, consulte Trabalhar com os comandos de consulta SQL.

Exiba os códigos de erro EXIT_ON_ERROR.

Use a opção de linha de comando --enhanced-exit-codes ou defina a variável de ambiente SNOWFLAKE_ENHANCED_EXIT_CODES como 1 para enviar os códigos de retorno aprimorados para todos os comandos snow sql. Para obter mais informações, consulte Códigos de erro aprimorados.