Using Snowflake Scripting in Snowflake CLI, SnowSQL, and Python Connector¶
This topic explains how to run the Snowflake Scripting examples in Snowflake CLI, SnowSQL, and the Python Connector.
Nota
If you are using other clients and interfaces, such as Snowflake CLI or the JDBC driver, you can skip this topic and refer to Snowflake Scripting blocks.
Introdução¶
Atualmente, as seguintes interfaces não analisam corretamente os blocos de script do Snowflake:
Os métodos
execute_stream()eexecute_string()no código do conector Python.Nota
Os outros métodos do conector Python analisam corretamente os blocos de script do Snowflake.
Entrar e executar um bloco do Script Snowflake pode resultar no seguinte erro:
Para contornar esse problema, use delimitadores no início e no fim de um bloco do Script Snowflake se estiver usando essas interfaces.
As seções a seguir explicam como fazer isso:
Como usar delimitadores de constante de cadeia de caracteres em torno de um bloco em um procedimento armazenado¶
Se você estiver criando um procedimento armazenado, coloque o bloco do Script Snowflake entre aspas simples ou cifrões duplos. Por exemplo:
Nota
Ao especificar o bloco de script diretamente na linha de comando Snowflake CLI, os delimitadores $$ podem não funcionar em alguns shells porque eles interpretam esse delimitador como outra coisa. Por exemplo, os shells bash e zsh o interpretam como o ID do processo (PID). Para resolver essa limitação, você pode usar as seguintes alternativas:
Se ainda quiser especificar o bloco de script na linha de comando, você pode fazer o escape dos delimitadores
$$, como em\$\$.Você também pode colocar o bloco de script com os delimitadores padrão
$$em um arquivo separado e chamá-lo com o comandosnow sql -f <filename>.
Passagem de um bloco como uma cadeia de caracteres literal para EXECUTE IMMEDIATE¶
Se você estiver escrevendo um bloco anônimo, passe o bloco como uma cadeia de caracteres literal para o comando EXECUTE IMMEDIATE. Para delimitar a cadeia de caracteres literal, use aspas simples ou cifrões duplos.
Por exemplo:
Como alternativa, você pode definir uma variável de sessão que seja uma cadeia de caracteres literal contendo o bloco, e você pode passar essa variável de sessão para o comando EXECUTE IMMEDIATE. Por exemplo:
Nota
Ao especificar o bloco de script diretamente na linha de comando Snowflake CLI, os delimitadores $$ podem não funcionar em alguns shells porque eles interpretam esse delimitador como outra coisa. Por exemplo, os shells bash e zsh o interpretam como o ID do processo (PID). Para resolver essa limitação, você pode usar as seguintes alternativas:
Se ainda quiser especificar o bloco de script na linha de comando, você pode fazer o escape dos delimitadores
$$, como em\$\$.Você também pode colocar o bloco de script com os delimitadores padrão
$$em um arquivo separado e chamá-lo com o comandosnow sql -f <filename>.