snow sql¶
Snowflake クエリを実行します。クエリ、ファイル名、インプットオプションのいずれかを使用します。実行するクエリは、クエリオプション、ファイル名オプション(ファイルからのすべてのクエリが実行されます)、または他のコマンドからの出力をパイプしてstdin経由で指定できます。例: cat my.sql | snow sql -i
。このコマンドは、クライアント側で行われる変数の置換をサポートします。
構文¶
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
引数¶
なし
オプション¶
--query, -q TEXT
実行するクエリ。
--filename, -f FILE
実行するファイル。デフォルト: []
--stdin, -i
標準入力からクエリを読み取ります。このコマンドに入力をパイプするときに使用します。デフォルト: false。
--variable, -D TEXT
key=value形式の文字列。提供された場合、 SQL コンテンツはテンプレートとして扱われ、提供されたデータを使用してレンダリングされます。
-p, --project TEXT
Snowflakeプロジェクトが存在するパス。デフォルトは現在の作業ディレクトリです。
--env TEXT
key=value形式の文字列。テンプレートに使用される env セクションの変数をオーバーライドする。デフォルト: []
--connection, -c, --environment TEXT
config.toml
ファイルで定義されている接続の名前。デフォルト:デフォルト
--host TEXT
接続用のホストアドレス。接続に指定された値を上書きします。
--port INTEGER
接続のポート。接続に指定された値を上書きします。
--account, --accountname TEXT
Snowflakeアカウントに割り当てられた名前。接続に指定された値を上書きします。
--user, --username TEXT
Snowflakeに接続するユーザー名。接続に指定された値を上書きします。
--password TEXT
Snowflakeのパスワード。接続に指定された値を上書きします。
--authenticator TEXT
Snowflakeの認証コード。接続に指定された値を上書きします。
--private-key-file, --private-key-path TEXT
Snowflake プライベートキーファイルへのパス。接続に指定された値を上書きします。
--token-file-path TEXT
Snowflake に接続する際に使用する OAuth トークンを含むファイルへのパス。
--database, --dbname TEXT
使用するデータベース。接続に指定された値を上書きします。
--schema, --schemaname TEXT
使用するデータベーススキーマ。接続に指定された値を上書きします。
--role, --rolename TEXT
使用するロール。接続に指定された値を上書きします。
--warehouse TEXT
使用するウェアハウス名。接続に指定された値を上書きします。
--temporary-connection, -x
構成で定義された接続ではなく、コマンドラインパラメーターで定義された接続を使用します。デフォルト: false。
--mfa-passcode TEXT
多要素認証(MFA)に使用するトークン。
--enable-diag
Pythonコネクター診断テストを実行します。デフォルト: false。
--diag-log-path TEXT
診断レポートパス。デフォルト: <temporary_directory>
--diag-allowlist-path TEXT
オプションの許可リストへの診断レポートパス。
--format [TABLE|JSON]
出力形式を指定します。デフォルト: TABLE
--verbose, -v
ログレベル
info
以上のログエントリを表示します。デフォルト: false。--debug
ログレベル
debug
以上のログ エントリを表示します。デバッグログには追加情報が含まれます。デフォルト: false。--silent
コンソールへの中間出力をオフにします。デフォルト: false。
--help
このコマンドのヘルプテキストを表示します。
使用上の注意¶
実行する SQL クエリを、次のオプションのいずれかを使用して指定できます。
--query
オプションを使用してクエリ文字列を指定します。--filename
オプションを使用して、実行する SQL クエリまたはクエリを含むファイルを指定します。クエリを:codenowrap:
stdin
として指定し、snow sql
コマンドにパイプします。例えば:codenowrap:cat my.sql | snow sql
です。SYSTEM 関数 のドル記号など、クエリにシェルに解釈させたくない特殊文字が含まれている場合は、次のいずれかを実行できます。
次のように、クエリを二重引用符ではなく一重引用符で囲みます。
snow sql -q 'SELECT SYSTEM$CLIENT_VERSION_INFO()'
次のように特殊文字をエスケープします。
snow sql -q "SELECT SYSTEM\$CLIENT_VERSION_INFO()"
SQL クエリをテンプレート化するために、 SQL クエリの
<% variable_name %>
プレースホルダーと-D
コマンドラインオプションを組み合わせた変数を次の形式で使用します。snow sql -q "select * from my-database order by <% column_name %>" -D "column_name=Country"
注釈
現在、テンプレートには SnowSQL
&variable_name
と<% variable_name %>
構文を使用できます。ただし、Snowflakeでは<% variable_name %>
構文の使用を推奨しています。
例¶
以下の例では、 SQL SYSTEM$CLIENT_VERSION_INFO システム関数を使用して、クライアントとドライバーのバージョン情報を返します。
snow sql --query 'SELECT SYSTEM$CLIENT_VERSION_INFO();'
select current_version(); +-------------------+ | CURRENT_VERSION() | |-------------------| | 8.25.1 | +-------------------+
次の例は、クライアント側の変数を使用してデータベースを指定する方法を示しています。
snow sql -q "select * from <% database %>.logs" -D "database=dev"
実行されると、コマンドは
<% database %>
変数の値をdev
に置き換えてdev.logs
識別子を作成し、select * from dev.logs
SQL クエリをSnowflakeに送信して処理します。注釈
現在、テンプレートには SnowSQL
&variable_name
構文を使用できます。ただし、Snowflakeでは<% variable_name %>
構文の使用を推奨しています。この例では、
--env
オプションを使って環境変数を渡す方法を示しています。snow sql -q "select '<% ctx.env.test %>'" --env test=value_from_cli