Migration à partir de SnowSQL vers Snowflake CLI¶
Note
La prise en charge de la migration Snowflake CLI est toujours en cours de développement. En attendant, Snowflake vous encourage à migrer de SnowSQL en utilisant ces instructions.
Ce guide fournit des instructions pour migrer de SnowSQL vers Snowflake CLI afin de vous aider à transférer sans difficulté vos connexions SnowSQL existantes et vos variables d’environnement.
Étapes de migration¶
Pour migrer depuis SnowSQL vers Snowflake CLI, suivez les étapes ci-dessous :
Installez Snowflake CLI avec votre méthode préférée.
Vérifiez éventuellement les modifications suggérées pour vos variables d’environnement.
Vous pouvez éventuellement créer un alias qui mappe la commande shell
snowsql
à la commande shellsnow sql
.
Installer le logiciel Snowflake CLI¶
Astuce
Liens utiles :
De la même manière que SnowSQL, Snowflake CLI fournit des programmes d’installation binaires. En outre, il vous permet également d’installer le logiciel à l’aide de la commande homebrew et pip.
Actuellement, Snowflake CLI prend en charge les plateformes suivantes :
macOS (arm)
:ref:` PyPi (pip) <label-snowcli_advanced_install>`
macOS (x86_64) :
:ref:` PyPi (pip) <label-snowcli_advanced_install>`
Linux (x86_64 et aarch64) :
:ref:` PyPi (pip) <label-snowcli_advanced_install>`
Windows (64 bits) :
:ref:` PyPi (pip) <label-snowcli_advanced_install>`
Actuellement, Snowflake CLI ne prend pas en charge la plateforme suivante :
Programme d’installation de bash Linux
Pour plus d’informations sur l’installation de Snowflake CLI, voir Installation de Snowflake CLI.
Migrer vos connexions et paramètres SnowSQL¶
|sf-cli|fournit un groupe de commandes :doc:`snow helpers</developer-guide/snowflake-cli/command-reference/helpers-commands/overview>` pour simplifier le processus de transition de SnowSQLvers |sf-cli| Utilisez ces commandes pour importer facilement vos connexions existantes et vos variables d’environnement :
La commande snow helpers import-snowsql-connections utilise un menu interactif pour vous permettre de choisir les connexions SnowSQLque vous souhaitez importer. Pour plus d’informations, voir Importer des connexions à partir de SnowSQL.
La commande snow helpers check-snowsql-env-vars vous aide à diagnostiquer quelles variables d’environnement sont définies dans votre environnement SnowSQLet affiche leurs équivalents Snowflake CLI correspondants. Pour plus d’informations, voir Utiliser des variables dans SQL.
Si vous utilisez SnowSQLpour exécuter des instructions SQL en ligne ou exécuter des fichiers, mais que vous ne souhaitez pas modifier tous vos scripts, envisagez de créer un alias qui mappe snowsql `à la commande :codenowrap:`snow sql
. Par exemple, sur les systèmes de type Unix, utilisez la commande suivante :
alias snowsql='snow sql'
Avec cet alias, vous pouvez utiliser vos scripts existants avec Snowflake CLI.
Notez que si vous êtes un utilisateur SnowSQL plus avancé, vous pourriez occasionnellement rencontrer des messages d’incompatibilité, généralement liés aux options utilisées pour la configuration de SnowSQL. Comme Snowflake CLI n’utilise pas toutes les options de configuration de SnowSQL, vous pourriez avoir besoin de copier vos scripts et de supprimer les options incompatibles.
Rétrograder vers SnowSQL¶
Snowflake CLI utilise ses propres fichiers de configuration, pour que vous puissiez continuer à utiliser SnowSQL. Vous pouvez installer à la fois SnowSQL et Snowflake CLI, et les exécuter indépendamment. Si vous définissez un alias, comme décrit ci-dessus, vous devez supprimer cet alias pour utiliser la commande snowsql
pourSnowSQL.
Migrer vos configurations¶
Différences dans les fichiers de configuration¶
SnowSQL
SnowSQL est configuré par son fichier de configuration, un fichier au format TOML qui contient les configurations de connexion, divers paramètres de l’outil et des variables pouvant être utilisées dans les requêtesSQL. Les configurations peuvent être réparties à plusieurs emplacements, ce qui vous permet de définir des valeurs par défaut à l’échelle du système et de les remplacer pour différents utilisateurs. Vous pouvez également définir des configurations à partir d’emplacements personnalisés en utilisant l’option de ligne de commande
--config
. Pour plus d’informations, voir Référence Paramètres de connexion.Snowflake CLI
Snowflake CLI possède aussi son propre fichier de configuration TOML, qui spécifie les configurations de connexion et les paramètres de l’outil. Il ne vous permet pas de définir des variables pour une utilisation ultérieure dans les requêtes SQL. Les variables dans |sf-cli|sont définies au niveau du projet dans des :doc:`fichiers de définition de projet </developer-guide/snowflake-cli/project-definitions/use-sql-variables>`. |sf-cli| n’utilise qu’un seul fichier de configuration qui, par défaut, se trouve dans le répertoire personnel de l’utilisateur. Vous pouvez également définir des configurations à partir d’emplacements personnalisés en utilisant l’option de ligne de commande
--config
. Pour plus d’informations, voir la référence de commande snow.
Trouver le fichier de configuration Snowflake CLI par défaut¶
L’emplacement de la configuration |sf-cli|par défaut de dépend de votre système et est déterminé par l’ordre spécifié dans Emplacement du fichier de configuration .toml.
Pour trouver la valeur du paramètre
default_config_file_path
de votre installation Snowflake CLI, exécutez la commandesnow --info
comme indiqué :snow --info
[ ... { "key": "default_config_file_path", "value": "/<user_home>/.snowflake/config.toml" }, ... ]
Importer des connexions à partir de SnowSQL¶
Vous pouvez importer toutes vos connexions SnowSQLavec la commande snow helpers import-snowsql-connections
. Pour plus d’informations, voir label-snowcli_import_connections_snowsql`et la référence de commande :doc:/developer-guide/snowflake-cli/command-reference/helpers-commands/import-snowsql-connections` .
Migrer manuellement la configuration de connexion par défaut¶
Si vous choisissez de ne pas importer les connexions à l’aide de la commande snow helpers import-snowsql-connections
, vous pouvez migrer manuellement la connexion par défaut.
Les différences dans la spécification de la connexion par défaut sont les suivantes :
SnowSQL
La connexion par défaut est configurée dans le fichier de configuration SnowSQL, et les paramètres de connexion sont définis directement dans la section [connections].
Snowflake CLI
La connexion par défaut est configurée dans le fichier de configuration |sf-cli| en tant que connexion portant le nom
default_connection_name
, défini au niveau supérieur de la configuration (voir Définir la connexion par défaut). Vous pouvez modifier la connexion par défaut à l’aide de la commandesnow connection set-default
;
Par défaut, SnowSQLet Snowflake CLI utilisent tous deux la configuration de connexion par défaut pour se connecter à Snowflake. Si vous l’avez configuré dans SnowSQL, vous devez migrer cette configuration vers le fichier de configuration Snowflake CLI, comme suit :
Ouvrez le fichier de configuration SnowSQLet recherchez les paramètres de connexion par défaut dans la section
[connections]
. Vous avez besoin des valeurs des paramètres de connexion lorsque vous ajoutez la connexion à Snowflake CLI.Pour ajouter la connexion à Snowflake CLI, utilisez l’une des méthodes suivantes :
Modifiez manuellement le fichier de configuration Snowflake CLI, comme suit :
Ouvrez le fichier de configuration Snowflake CLI.
Ajoutez une section
connections.your_connection_name]
et copiez/collez les détails de la configuration par défaut depuis le fichier de configuration SnowSQL.Modifiez les noms des paramètres suivants, comme indiqué :
accountname
enaccount
username
enuser
dbname
endatabase
schemaname
enschema
warehousename
enwarehouse
rolename
enrole
Ajoutez ou définissez le paramètre
default_connection_name = "your_connection_name"
au niveau supérieur du fichier de configuration (voir Définir la connexion par défaut).
Utilisez les commandes
snow connection add
etsnow connection set-default
. Pour plus d’informations, voir Gérer ou ajouter vos connexions à Snowflake avec les commandes snow connection.
Migrez manuellement vos configurations de connexion nommées¶
Si vous n’utilisez pas les commandes snow helpers import-snowsql-connections
pour importer vos connexions, vous pouvez les migrer manuellement.
Les différences dans la spécification des connexions nommées sont les suivantes :
SnowSQL
Les connexions nommées sont configurées dans le fichier de configuration SnowSQL. Chaque connexion nommée possède sa propre section
[connections.your_connection_name]
.Snowflake CLI
Snowflake CLI utilise presque le même format pour configurer les connexions nommées. Vous pouvez les copier à partir de la configuration SnowSQL et renommez les paramètres comme spécifié dans la connexion par défaut.
Par défaut, SnowSQLet|sf-cli| vous permettent tous deux d’utiliser une connexion nommée pour vous connecter à Snowflake. Si vous souhaitez continuer à utiliser ces connexions nommées dans SnowSQL, vous devez les migrer vers le fichier de configuration|sf-cli| :
Ouvrez le fichier de configuration SnowSQLet localisez les sections
[connections.your_connection_name]
. Vous avez besoin des valeurs des paramètres de connexion lorsque vous ajoutez les connexions dans Snowflake CLI.Pour ajouter la connexion à Snowflake CLI, utilisez l’une des méthodes suivantes :
Modifiez manuellement le fichier de configuration Snowflake CLI, comme suit :
Ouvrez le fichier de configuration Snowflake CLI.
Ajoutez une section
connections.your_connection_name]
et copiez/collez les détails de la configuration par défaut depuis le fichier de configuration SnowSQL.Modifiez les noms des paramètres suivants, comme indiqué :
accountname
enaccount
username
enuser
dbname
endatabase
schemaname
enschema
warehousename
enwarehouse
rolename
enrole
Utilisez la commande
snow connection add
. Pour plus d’informations, voir Gérer ou ajouter vos connexions à Snowflake avec les commandes snow connection.
Configurer les journaux¶
Pour configurer manuellement la journalisation pour Snowflake CLI, voir la documentation Configurer la journalisation.
Migrer vos variables¶
Astuce
Liens utiles :
Documentation A propos des fichiers de définition de projet
Documentation Utiliser des variables dans SQL
Snowflake CLI ne prend pas en charge la spécification de variables dans son fichier de configuration. À la place, il utilise une approche plus axée sur les projets, qui associe les variables à des projets spécifiques. Snowflake CLI vous permet de définir des variables dans des fichiers de définition de projet :file:`snowflake.yml`. Vous pouvez ensuite utiliser ces variables dans les requêtesSQL telles que décrites dans A propos des fichiers de définition de projet.
Pour définir des variables pour votre projet, ajoutez une section
env
au fichiersnowflake.yml
du projet et incluez toutes les variables que vous souhaitez utiliser dans vos requêtes.
L’exemple suivant définit deux variables : database
et role
:
definition_version: 2
env:
database: "dev"
role: "eng_rl"
Migrer manuellement vos variables d’environnement¶
Astuce
Liens utiles :
Documentation Utiliser des variables d’environnement pour les identifiants de connexion Snowflake
Documentation Utiliser des variables dans SQL
Dans SnowSQL, vous pouvez utiliser des variables d’environnement (comme $SNOWSQL_ACCOUNT
et $SNOWSQL_DATABASE
) au lieu de spécifier des paramètres en ligne de commande lors du démarrage d’une connexion. Cette approche fournit un autre moyen de spécifier des configurations de connexion par défaut. Snowflake CLI offre la même fonctionnalité mais utilise des noms différents pour ces paramètres et vous permet de remplacer de nombreux autres paramètres de configuration via des variables d’environnement. Si vous utilisez des variables d’environnement pour vous connecter à Snowflake, pour plus d’informations, voir Connexion à Snowflake avec variables d’environnement. Voir aussi les informations sur les possibilités pour la configuration des variables d’environnement dans la documentation Snowflake CLI.
Se connecter à Snowflake¶
En supposant que vous avez migré votre configuration, vous pouvez vous connecter à Snowflake à partir de Snowflake CLI en utilisant des méthodes similaires à celles utilisées par SnowSQL, dont les suivantes :
Utilisez une connexion avec des options de ligne de commande.
Utiliser un mélange de connexions, de variables d’environnement et d’options de ligne de commande.
Définir la connexion par défaut¶
Pour vous connecter en utilisant la configuration par défaut définie dans votre fichier de configuration :
SnowSQL
snowsql -q "select 1"
Snowflake CLI
snow sql -q "select 1"
Utilisez une connexion avec des options de ligne de commande¶
Pour vous connecter en utilisant la configuration par défaut définie dans votre fichier de configuration et remplacer les paramètres par des options de ligne de commande :
SnowSQL
snowsql --username myname -q "select 1"
Snowflake CLI
snow sql --username myname -q "select 1"
Pour une liste des options possibles de la ligne de commande, voir snow sql. Notez que certaines options ont des noms différents dans SnowSQL.
Utiliser une configuration nommée¶
Pour vous connecter en utilisant une configuration nommée définie dans votre fichier de configuration :
SnowSQL
snowsql -c dev -q "select 1"
Snowflake CLI
snow sql -c dev -q "select 1"
Utilisez uniquement les options de la ligne de commande¶
Pour se connecter en utilisant uniquement des options de ligne de commande à la place d’une connexion configurée :
SnowSQL
snowsql \ --accountname myaccount \ --username myuser \ --authenticator SNOWFLAKE_JWT \ --private-key-path "path_to_my_key" \ -q "select 1"
Snowflake CLI
snow sql \ --temporary-connection \ --accountname myaccount \ --username myuser \ --authenticator SNOWFLAKE_JWT \ --private-key-path "path_to_my_key" \ -q "select 1"
Notez que Snowflake CLI nécessite l’option :codenowrap`:–temporary-connection` pour cette méthode.
Utiliser les variables d’environnement¶
Pour se connecter en utilisant la connexion par défaut, en transmettant certains paramètres comme variables d’environnement :
SnowSQL
export SNOWSQL_USER=myuser snowsql -q "select 1"
Snowflake CLI
export SNOWFLAKE_USER=myuser snow sql -q "select 1"
Notez que les noms des variables d’environnement peuvent différer. Pour plus d’informations, voir Utiliser des variables d’environnement pour les identifiants de connexion Snowflake.
Utiliser un mélange de connexions, de variables d’environnement et d’options de ligne de commande¶
Pour se connecter en utilisant une approche mixte avec une connexion nommée, des variables d’environnement et des options de ligne de commande :
SnowSQL
export SNOWSQL_USER=myuser snowsql -c dev --accountname myaccount -q "select 1"
Snowflake CLI
export SNOWFLAKE_USER=myuser snow sql -c dev --accountname myaccount -q "select 1"
Vous pouvez utiliser cette méthode avec les connexions par défaut et nommées.
Exécution des requêtes SQL¶
Exécuter des requêtes SQL à partir de diverses entrées¶
Snowflake CLI vous permet d’exécuter des requêtes SQL utilisant des entrées similaires à celles gérées par SnowSQL. Les exemples suivants exécutent des requêtes SQL en utilisant différentes entrées.
Exécuter des requêtes en utilisant des paramètres de ligne de commande :
SnowSQL
snowsql -q "select 1"
Snowflake CLI
snow sql -q "select 1"
Exécuter des requêtes à partir d’un fichier :
SnowSQL
snowsql -f test.sql
Snowflake CLI
snow sql -f test.sql
Exécuter des requêtes à partir de l’entrée standard :
SnowSQL
cat test.sql | snowsql
Snowflake CLI
cat test.sql | snow sql --stdin
Enregistrer les résultats de la requête dans un fichier JSON¶
Snowflake CLI ne prend actuellement pas en charge toutes les options de formatage de sortie SnowSQL. Cependant, Snowflake CLI vous permet d’enregistrer les résultats de requête soit sous forme de table formatée, soit sous format JSON. Bien que CSV et d’autres formats ne sont pas encore disponibles, vous pouvez utiliser des outils externes, comme jq, pour couvrir les données d’autres formats JSON.
SnowSQL
snowsql \ -f test.sql \ -o "output_format=json" \ -o "output_file=result.json"
Snowflake CLI
snow sql -f test.sql --format json > result.json
Exécution de requêtes à l’aide de variables¶
SnowSQL et Snowflake CLI vous permettent tous deux d’utiliser des variables dans les requêtes SnowSQL. vous permet d’utiliser des variables à partir des options en ligne de commande, de son fichier de configuration, ainsi que quelques variables intégrées. Bien que Snowflake CLI ne prend pas en charge les variables dans son fichier de configuration ou utilise des variables intégrées, elle prend en charge la spécification de paramètres avec des options de ligne de commande et la spécification de variables dans les fichiers de définition de projet. Pour plus d’informations sur la migration des variables de votre fichier de configuration SnowSQL, voir Migrer vos variables.
Après avoir migré vos variables depuis la configuration deSnowSQL, vous pouvez exécuter des requêtes Snowflake CLI en utilisant des variables provenant à la fois des options en ligne de commande et des définitions de projet.
Lorsque vous utilisez des variables, notez les différences importantes suivantes entre SnowSQL et Snowflake CLI :
Ils utilisent des syntaxes différentes pour les substitutions de variables. SnowSQL utilise la syntaxe
&variable
ou&{variable}
, tandis que Snowflake CLI utilise<% variable %>
. La syntaxe de SnowSQL est actuellement pris en charge, mais est devenu obsolète.Snowflake CLI active automatiquement la substitution de variable, vous n’avez donc pas besoin de l’activer explicitement comme avec SnowSQL.
Les noms de variables dans les fichiers de définition de projet Snowflake CLI doivent être précédés du préfixe
ctx.env
, comme indiqué :
Les exemples suivants montrent les différences lors de l’exécution de requêtes SQLavec des variables :
Exécutez une requête en utilisant des variables dans les options en ligne de commande, où :codenowrap:
x
est le nom de la variable :SnowSQL
snowsql \ -o variable_substitution=true \ -q "select &x" \ -D x=1
Snowflake CLI
snow sql \ -q "select <% x %>" \ -D x=1
Snowflake CLI (utilisant une syntaxe obsolète pour faciliter les migrations rapides)
snow sql \ -q "select &x" \ -D x=1
Exécutez une requête en utilisant des variables dans une configuration SnowSQLpar rapport à un fichier de définition de projet Snowflake CLI :
SnowSQL
# save variables to config echo "[variables] xyz=Hello World" > custom_config # execute query snowsql \ --config custom_config \ -o variable_substitution=true \ -q "select '&{xyz}'"
Snowflake CLI
# save variables to project definition echo "definition_version: 2 env: xyz: Hello World" > snowflake.yml # execute query snow sql -q "select '<% ctx.env.xyz %>'"
Snowflake CLI (utilisant une syntaxe obsolète pour faciliter les migrations rapides)
# save variables to project definition echo "definition_version: 2 env: xyz: Hello World" > snowflake.yml # execute query snow sql -q "select '&{ctx.env.xyz}'"
Parité des fonctionnalités SnowSQL et Snowflake CLI¶
Le tableau suivant montre comment les fonctionnalités SnowSQL sont intégrées à Snowflake CLI.
Fonctionnalité SnowSQL |
Mise en œuvre Snowflake CLI |
---|---|
Fichier de configuration globale ( |
Les fichiers de configuration et de connexion utilisent un format TOMLet sont stockés dans le répertoire (Linux) |
La configuration de la connexion via les options de ligne de commande prend en charge tout ce que le Snowflake Connector pour Python prend en charge. |
Snowflake CLI prend en charge les options en ligne de commande, comme décrit dans la référence des commandes snow connection add. |
Test de connexion via l’option de ligne de commande |
Actuellement, la commande |
Possibilité de générer et d’afficher un jeton JWT basé sur les paramètres |
Utilisez la commande |
Exécutez une requête à partir d’un fichier en utilisant les options |
Utilisez la commande |
Exécutez une requête depuis l’entrée en ligne de commande en utilisant les options :codenowrap`:-q` ou |
Utilisez la commande |
Modélisation de requêtes avec la possibilité de fournir des variable à l’aide de l’option de ligne de commande :codenowrap: |
Snowflake CLI prend en charge les variables SQL dans les modèlesSQL et dans les fichiers de définition de projet snowflake.yml. Pour plus d’informations, voir Utilisation de variables pour les modèles SQL et Stockage de variables dans le fichier de définition du projet snowflake.yml. |
Utilisez le mode interactif. La prise en charge des requêtes asynchrones sera ajoutée ultérieurement. |
|
Incluez, ou importez, un ou plusieurs fichiers SQL à partir d’un autre fichier SQL : !source file1.sql;
!source file2.sql;
!source http://example.com/my.sql
|
Snowflake CLI prend en charge l’imbrication de scripts SQL avec prise en charge des modèles. Pour plus d’informations, voir Utilisation des commandes de requête SQL. |
Affichez les codes d’erreur EXIT_ON_ERROR. |
Utilisez l’option de ligne de commande :codenowrap:` –enhanced-exit-codes`, ou définissez la variable d’environnement |