snow sql

Executa a consulta Snowflake. Use a opção de consulta, nome de arquivo ou entrada. A consulta a ser executada pode ser especificada usando a opção de consulta, opção de nome de arquivo (todas as consultas do arquivo serão executadas) ou via stdin, canalizando a saída de outro comando. Por exemplo cat my.sql | snow sql -i. O comando oferece suporte à substituição de variáveis que acontece no lado do cliente.

Sintaxe

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

Argumentos

Nenhum

Opções

--query, -q TEXT

Consulta a ser executada.

--filename, -f FILE

Arquivo a ser executado. Padrão: [].

--stdin, -i

Leia a consulta da entrada padrão. Use-a ao canalizar a entrada para este comando. Padrão: falso.

--variable, -D TEXT

Cadeia de caracteres no formato chave=valor. Se fornecido, o conteúdo SQL será tratado como modelo e renderizado usando os dados fornecidos.

-p, --project TEXT

Caminho onde o projeto Snowflake está. O padrão é o diretório de trabalho atual.

--env TEXT

Cadeia de caracteres no formato chave=valor. Substitui variáveis da seção env usadas para modelos. Padrão: [].

--connection, -c, --environment TEXT

Nome da conexão, conforme definido no arquivo config.toml. Padrão: padrão.

--host TEXT

Endereço do host da conexão. Substitui o valor especificado para a conexão.

--port INTEGER

Porta para a conexão. Substitui o valor especificado para a conexão.

--account, --accountname TEXT

Nome atribuído à sua conta Snowflake. Substitui o valor especificado para a conexão.

--user, --username TEXT

Nome de usuário para se conectar ao Snowflake. Substitui o valor especificado para a conexão.

--password TEXT

Senha do Snowflake. Substitui o valor especificado para a conexão.

--authenticator TEXT

Autenticador Snowflake. Substitui o valor especificado para a conexão.

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

Caminho do arquivo de chave privada Snowflake. Substitui o valor especificado para a conexão.

--token-file-path TEXT

Caminho para o arquivo com um token OAuth que deve ser usado ao conectar-se ao Snowflake.

--database, --dbname TEXT

Banco de dados a ser usado. Substitui o valor especificado para a conexão.

--schema, --schemaname TEXT

Esquema de banco de dados a ser usado. Substitui o valor especificado para a conexão.

--role, --rolename TEXT

Função a ser usada. Substitui o valor especificado para a conexão.

--warehouse TEXT

Warehouse a ser usado. Substitui o valor especificado para a conexão.

--temporary-connection, -x

Usa conexão definida com parâmetros de linha de comando, em vez de uma definida na configuração. Padrão: falso.

--mfa-passcode TEXT

Token a ser usado para autenticação multifator (MFA).

--enable-diag

Execução do teste de diagnóstico do conector Python. Padrão: falso.

--diag-log-path TEXT

Caminho do relatório de diagnóstico. Padrão: <temporary_directory>.

--diag-allowlist-path TEXT

Caminho do relatório de diagnóstico para a lista de permissões opcional.

--format [TABLE|JSON]

Especifica o formato de saída. Padrão: TABLE.

--verbose, -v

Exibe entradas de log para níveis de log info e superior. Padrão: falso.

--debug

Exibe entradas de log para níveis de log de depuração e superiores; os logs de depuração contêm informações adicionais. Padrão: falso.

--silent

Desliga a saída intermediária para o console. Padrão: falso.

--help

Exibe o texto de ajuda para este comando.

Notas de uso

Você pode especificar a consulta SQL para execução usando uma das seguintes opções

  • Especifique a cadeia de caracteres de consulta usando a opção --query.

  • Use a opção --filename para especificar um arquivo com a consulta ou consultas SQL a serem executadas.

  • Especifique a consulta como stdin e canal para o comando snow sql, como cat my.sql | snow sql.

  • Se sua consulta contiver caracteres especiais, como o cifrão em funções SYSTEM, que você não quer que o shell interprete, você pode fazer qualquer um dos seguintes:

    • Coloque a consulta entre aspas simples em vez de aspas duplas, como em:

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

    • Escape do caractere especial, como em:

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

  • Use variáveis para modelar consultas SQL com a combinação de um espaço reservado <% variable_name %> em suas consultas SQL e uma opção de linha de comando -D, no formato:

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

    Nota

    Atualmente, é possível usar a sintaxe SnowSQL &variable_name e <% variable_name %> para modelos. Entretanto, a Snowflake recomenda usar a sintaxe <% variable_name %>.

Exemplos

  • O exemplo a seguir usa a função SQL SYSTEM$CLIENT_VERSION_INFO do sistema para retornar informações de versão sobre clientes e drivers.

    snow sql --query 'SELECT SYSTEM$CLIENT_VERSION_INFO();'
    
    Copy
    select current_version();
    +-------------------+
    | CURRENT_VERSION() |
    |-------------------|
    | 8.25.1            |
    +-------------------+
    
  • O exemplo a seguir mostra como você pode especificar um banco de dados usando uma variável do lado do cliente:

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

    Quando executado, o comando substitui o valor dev na variável <% database %> para criar o identificador dev.logs e então envia a consulta SQL select * from dev.logs para processamento no Snowflake.

    Nota

    Atualmente, você pode usar a sintaxe SnowSQL &variable_name e & { variable_name } para modelos. Entretanto, a Snowflake recomenda usar a sintaxe <% variable_name %>.

  • Este exemplo mostra como passar variáveis de ambiente usando a opção --env:

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