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 :

  1. Installez Snowflake CLI avec votre méthode préférée.

  2. Importez vos connexions.

  3. Vérifiez éventuellement les modifications suggérées pour vos variables d’environnement.

  4. Vous pouvez éventuellement créer un alias qui mappe la commande shell snowsql à la commande shell snow sql.

Installer le logiciel Snowflake CLI

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 :

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 :

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

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

Astuce

Liens utiles :

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 commande snow --info comme indiqué :

    snow --info
    
    Copy
    [
      ...
    
      {
          "key": "default_config_file_path",
          "value": "/<user_home>/.snowflake/config.toml"
      },
    
      ...
    ]
    

Importer des connexions à partir de SnowSQL

Astuce

Liens utiles :

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 :

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 :

  1. 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.

  2. Pour ajouter la connexion à Snowflake CLI, utilisez l’une des méthodes suivantes :

    • Modifiez manuellement le fichier de configuration Snowflake CLI, comme suit :

      1. Ouvrez le fichier de configuration Snowflake CLI.

      2. 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.

      3. Modifiez les noms des paramètres suivants, comme indiqué :

        • accountname en account

        • username en user

        • dbname en database

        • schemaname en schema

        • warehousename en warehouse

        • rolename en role

      4. 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 et snow 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| :

  1. 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.

  2. Pour ajouter la connexion à Snowflake CLI, utilisez l’une des méthodes suivantes :

    • Modifiez manuellement le fichier de configuration Snowflake CLI, comme suit :

      1. Ouvrez le fichier de configuration Snowflake CLI.

      2. 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.

      3. Modifiez les noms des paramètres suivants, comme indiqué :

        • accountname en account

        • username en user

        • dbname en database

        • schemaname en schema

        • warehousename en warehouse

        • rolename en role

    • 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

Astuce

Liens utiles :

Pour configurer manuellement la journalisation pour Snowflake CLI, voir la documentation Configurer la journalisation.

Migrer vos variables

Astuce

Liens utiles :

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 fichier snowflake.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"
Copy

Migrer manuellement vos variables d’environnement

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

Astuce

Liens utiles :

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 :

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"
      
      Copy
    • Snowflake CLI

      snow sql -q "select 1"
      
      Copy

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"
      
      Copy
    • Snowflake CLI

      snow sql --username myname -q "select 1"
      
      Copy

      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"
      
      Copy
    • Snowflake CLI

      snow sql -c dev -q "select 1"
      
      Copy

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"
      
      Copy
    • Snowflake CLI

      snow sql \
        --temporary-connection \
        --accountname myaccount \
        --username myuser \
        --authenticator SNOWFLAKE_JWT \
        --private-key-path "path_to_my_key" \
        -q "select 1"
      
      Copy

      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 :

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"
      
      Copy
    • Snowflake CLI

      export SNOWFLAKE_USER=myuser
      snow sql -c dev --accountname myaccount -q "select 1"
      
      Copy

      Vous pouvez utiliser cette méthode avec les connexions par défaut et nommées.

Exécution des requêtes SQL

Astuce

Liens utiles :

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"
      
      Copy
    • Snowflake CLI

      snow sql -q "select 1"
      
      Copy
  • Exécuter des requêtes à partir d’un fichier :

    • SnowSQL

      snowsql -f test.sql
      
      Copy
    • Snowflake CLI

      snow sql -f test.sql
      
      Copy
  • Exécuter des requêtes à partir de l’entrée standard :

    • SnowSQL

      cat test.sql | snowsql
      
      Copy
    • Snowflake CLI

      cat test.sql | snow sql --stdin
      
      Copy

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"
    
    Copy
  • Snowflake CLI

    snow sql -f test.sql --format json > result.json
    
    Copy

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
      
      Copy
    • Snowflake CLI

      snow sql \
        -q "select <% x %>" \
        -D x=1
      
      Copy
    • Snowflake CLI (utilisant une syntaxe obsolète pour faciliter les migrations rapides)

      snow sql \
        -q "select &x" \
        -D x=1
      
      Copy
  • 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}'"
      
      Copy
    • 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 %>'"
      
      Copy
    • 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}'"
      
      Copy

Parité des fonctionnalités SnowSQL et Snowflake CLI

Le tableau suivant montre comment les fonctionnalités SnowSQL sont intégrées à Snowflake CLI.

Parité des fonctionnalités SnowSQL et Snowflake CLI

Fonctionnalité SnowSQL

Mise en œuvre Snowflake CLI

Fichier de configuration globale (~/.snowsql/config) au format .ini.

Les fichiers de configuration et de connexion utilisent un format TOMLet sont stockés dans le répertoire (Linux) ~/.snowflake ou dans un autre sous-répertoire du répertoire HOME de l’utilisateur (autres systèmes OS). Pour plus d’informations, voir Emplacement du fichier de configuration .toml.

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 --probe-connection. Cette option est principalement utilisée pour imprimer la chaîne de certificats TLS/SSL.

Actuellement, la commande snow connection test effectue le test de connexion mais n’affiche pas la chaîne de certificats TLS/SSL. Vous pouvez générer des données de diagnostic de connexion pour le support Snowflake.

Possibilité de générer et d’afficher un jeton JWT basé sur les paramètres user, account et private-key-path.

Utilisez la commande snow connection generate-jwt. Pour plus d’informations, voir Utiliser un fichier de clé privée pour l’authentification.

Exécutez une requête à partir d’un fichier en utilisant les options -f ou --filenameFILE.

Utilisez la commande snow sql [-f/--filename] file.sql.

Exécutez une requête depuis l’entrée en ligne de commande en utilisant les options :codenowrap`:-q` ou --queryTEXT.

Utilisez la commande snow sql [-q/--query] " <query-text>" ; par exemple snow sql -q "select emp_id FROMemployees".

Modélisation de requêtes avec la possibilité de fournir des variable à l’aide de l’option de ligne de commande :codenowrap: --variable, comme par exemple --variable db_key=$DB_KEY.

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.

Mode interactif SQLde l’interpréteur de commandes.

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
Copy

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 SNOWFLAKE_ENHANCED_EXIT_CODES sur 1 pour envoyer les codes de renvoi améliorés pour toutes les commandes snow sql. Pour plus d’informations, voir Codes d’erreur améliorés.