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
Copy

引数

なし

オプション

--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"
    
    Copy

    注釈

    現在、テンプレートには SnowSQL &variable_name<% variable_name %> 構文を使用できます。ただし、Snowflakeでは <% variable_name %> 構文の使用を推奨しています。

  • 以下の例では、 SQL SYSTEM$CLIENT_VERSION_INFO システム関数を使用して、クライアントとドライバーのバージョン情報を返します。

    snow sql --query 'SELECT SYSTEM$CLIENT_VERSION_INFO();'
    
    Copy
    select current_version();
    +-------------------+
    | CURRENT_VERSION() |
    |-------------------|
    | 8.25.1            |
    +-------------------+
    
  • 次の例は、クライアント側の変数を使用してデータベースを指定する方法を示しています。

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

    実行されると、コマンドは <% 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
    
    Copy