snow sql

Exécute la requête Snowflake. Utilisez soit une requête, un nom de fichier ou une option d’entrée. La requête à exécuter peut être spécifiée à l’aide de l’option query, de l’option filename (toutes les requêtes du fichier seront exécutées) ou via stdin en acheminant la sortie d’une autre commande. Par exemple, cat my.sql | snow sql -i. La commande prend en charge la substitution de variables côté client.

Syntaxe

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

Arguments

Aucun

Options

--query, -q TEXT

Requête à exécuter.

--filename, -f FILE

Fichier à exécuter. Par défaut : [].

--stdin, -i

Lisez la requête à partir de l’entrée standard. Utilisez-le lorsque vous introduisez des données dans cette commande. Par défaut : false.

--variable, -D TEXT

Chaîne au format clé=valeur. Si elle est fournie, le contenu SQL sera traité comme un modèle et rendu à l’aide des données fournies.

-p, --project TEXT

Chemin où réside le projet Snowflake. La valeur par défaut est le répertoire de travail actuel.

--env TEXT

Chaîne au format clé=valeur. Remplace les variables de la section env utilisées pour les modèles. Par défaut : [].

--connection, -c, --environment TEXT

Nom de la connexion, tel que défini dans votre fichier config.toml. Défaut : défaut.

--host TEXT

Adresse de l’hôte pour la connexion. Remplace la valeur spécifiée pour la connexion.

--port INTEGER

Port pour la connexion. Remplace la valeur spécifiée pour la connexion.

--account, --accountname TEXT

Nom attribué à votre compte Snowflake. Remplace la valeur spécifiée pour la connexion.

--user, --username TEXT

Nom d’utilisateur pour se connecter à Snowflake. Remplace la valeur spécifiée pour la connexion.

--password TEXT

Mot de passe Snowflake. Remplace la valeur spécifiée pour la connexion.

--authenticator TEXT

Authentificateur Snowflake. Remplace la valeur spécifiée pour la connexion.

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

Chemin du fichier de clé privée Snowflake. Remplace la valeur spécifiée pour la connexion.

--token-file-path TEXT

Chemin vers un fichier avec un jeton OAuth qui doit être utilisé lors de la connexion à Snowflake.

--database, --dbname TEXT

Base de données à utiliser. Remplace la valeur spécifiée pour la connexion.

--schema, --schemaname TEXT

Schéma de la base de données à utiliser. Remplace la valeur spécifiée pour la connexion.

--role, --rolename TEXT

Rôle à utiliser. Remplace la valeur spécifiée pour la connexion.

--warehouse TEXT

Entrepôt à utiliser. Remplace la valeur spécifiée pour la connexion.

--temporary-connection, -x

Utilise la connexion définie avec les paramètres de la ligne de commande, au lieu de celle définie dans la configuration. Par défaut : false.

--mfa-passcode TEXT

Jeton à utiliser pour l’authentification multifactorielle (MFA)

--enable-diag

Exécutez le test de diagnostic du Python Connector. Par défaut : false.

--diag-log-path TEXT

Chemin d’accès au rapport de diagnostic. Par défaut : <temporary_directory>.

--diag-allowlist-path TEXT

Chemin d’accès au rapport de diagnostic vers la liste d’autorisations facultative.

--format [TABLE|JSON]

Spécifie le format de sortie. Par défaut : TABLE.

--verbose, -v

Affiche les entrées de journal pour les niveaux de journalisation info et supérieurs. Par défaut : false.

--debug

Affiche les entrées de journal pour les niveaux de journalisation debug et supérieurs ; les journaux de débogage contiennent des informations supplémentaires. Par défaut : false.

--silent

Désactive la sortie intermédiaire vers la console. Par défaut : false.

--help

Affiche le texte d’aide de cette commande.

Notes sur l’utilisation

Vous pouvez spécifier la requête SQL à exécuter en utilisant l’une des options suivantes

  • Spécifiez la chaîne de requête à l’aide de l’option --query.

  • Utilisez l’option de nom de fichier --filename pour spécifier un fichier contenant la ou les requêtes SQL à exécuter.

  • Spécifiez la requête comme stdin et envoyez-la à la commande snow sql, telle que cat my.sql | snow sql.

  • Si votre requête contient des caractères spéciaux, tels que le signe du dollar dans les fonctions SYSTEM, que vous ne voulez pas que l’interpréteur de commandes interprète, vous pouvez procéder de l’une ou l’autre des manières suivantes :

    • Mettez la requête entre guillemets simples au lieu de guillemets doubles, comme dans l’exemple suivant :

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

    • Échappez le caractère spécial, comme dans :

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

  • Utilisez les variables pour modeler les requêtes SQL avec une combinaison d’un espace réservé <% variable_name %> dans vos requêtes SQL et d’une option de ligne de commande -D, sous la forme suivante :

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

    Note

    Vous pouvez actuellement utiliser la syntaxe SnowSQL &variable_name et <% variable_name %> pour les modèles. Cependant, Snowflake recommande d’utiliser la <% variable_name %>.

Exemples

  • L’exemple suivant utilise la fonction système SQL SYSTEM$CLIENT_VERSION_INFO pour renvoyer des informations sur la version des clients et des pilotes.

    snow sql --query 'SELECT SYSTEM$CLIENT_VERSION_INFO();'
    
    Copy
    select current_version();
    +-------------------+
    | CURRENT_VERSION() |
    |-------------------|
    | 8.25.1            |
    +-------------------+
    
  • L’exemple suivant montre comment vous pouvez spécifier une base de données à l’aide d’une variable côté client :

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

    Lorsqu’elle est exécutée, la commande remplace la valeur dev dans la variable <% database %> pour créer l’identificateur dev.logs, puis envoie la requête select * from dev.logs SQL à Snowflake en vue de son traitement.

    Note

    Vous pouvez actuellement utiliser la syntaxe SnowSQL &variable_name and & { variable_name } pour les modèles. Cependant, Snowflake recommande d’utiliser la <% variable_name %>.

  • Cet exemple montre comment transmettre des variables d’environnement à l’aide de l’option --env :

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