Migration von SnowSQL zu Snowflake CLI¶
Bemerkung
Die Unterstützung für die Snowflake CLI-Migration befindet sich noch in der Entwicklung. In der Zwischenzeit empfiehlt Snowflake Ihnen, von SnowSQL unter Verwendung dieser Anleitung zu migrieren.
Dieses Handbuch enthält Anweisungen für die Migration von SnowSQL zu Snowflake CLI, damit Sie Ihre bestehenden SnowSQL-Verbindungen und Umgebungsvariablen nahtlos verschieben können.
Schritte zur Migration¶
Führen Sie die folgenden Schritte aus, um von SnowSQL zu Snowflake CLI zu migrieren:
Installieren Sie Snowflake CLI mit Ihrer bevorzugten Methode.
Prüfen Sie optional, ob Änderungen für Ihre Umgebungsvariablen vorgeschlagen wurden.
Erstellen Sie optional einen Alias, der den
snowsql
-Shell-Befehl demsnow sql
-Shell-Befehl zuordnet.
Snowflake CLI-Software installieren¶
Tipp
Nützliche Links:
Ähnlich wie SnowSQL, bietet Snowflake CLI binäre Installationsprogramme. Außerdem können Sie die Software auch mit Homebrew und pip installieren.
Derzeit unterstützt Snowflake CLI die folgenden Plattformen:
macOS (arm)
macOS (x86_64):
Linux (x86_64 und aarch64):
Windows (64 Bit):
Derzeit unterstützt Snowflake CLI die folgende Plattform nicht:
Linux-Bash-Installationsprogramm
Weitere Informationen zur Installation von Snowflake CLI finden Sie unter Installieren von Snowflake CLI.
Ihre SnowSQL-Verbindungen und -Einstellungen migrieren¶
Snowflake CLI bietet eine snow helpers-Befehlsgruppe, um den Übergang von SnowSQL zu Snowflake CLI zu vereinfachen. Verwenden Sie diese Befehle, um Ihre bestehenden Verbindungen und Ihre Umgebungsvariablen ganz einfach zu importieren:
Der Befehl snow helpers import-snowsql-connections verwendet ein interaktives Menü, in dem Sie auswählen können, welche SnowSQL-Verbindungen Sie importieren möchten. Weitere Informationen dazu finden Sie unter Verbindungen von SnowSQL importieren.
Der Befehl snow helpers check-snowsql-env-vars hilft Ihnen zu diagnostizieren, welche Umgebungsvariablen in Ihrer SnowSQL-Umgebung festgelegt sind und zeigt die entsprechenden Snowflake CLI-Äquivalente an. Weitere Informationen dazu finden Sie unter Variablen in SQL verwenden.
Wenn Sie SnowSQL zur Ausführung von Inline-SQL-Anweisungen oder zur Ausführung von Dateien verwenden, Sie aber nicht alle Ihre Skripte bearbeiten möchten, sollten Sie einen Alias erstellen, der snowsql
zum Befehl snow sql
zuordnet. Verwenden Sie zum Beispiel auf Unix-ähnlichen Systemen den folgenden Befehl:
alias snowsql='snow sql'
Mit diesem Alias können Sie Ihre vorhandenen Skripte mit Snowflake CLI verwenden.
Beachten Sie, dass, wenn Sie ein fortgeschrittener SnowSQL-Benutzer sind, Sie gelegentlich auf Inkompatibilitätsmeldungen stoßen, die sich normalerweise auf Optionen beziehen, die für die Konfiguration von SnowSQL verwendet werden. Da Snowflake CLI nicht alle SnowSQL-Konfigurationsoptionen verwendet, müssen Sie möglicherweise Kopien Ihrer Skripte erstellen und diese inkompatiblen Optionen entfernen.
Zurücksetzen (Rollback) auf SnowSQL¶
Snowflake CLI verwendet seine eigenen Konfigurationsdateien, sodass Sie weiterhin SnowSQL verwenden können. Sie können sowohl SnowSQL als auch Snowflake CLI installieren und sie unabhängig voneinander ausführen. Wenn Sie einen Alias wie oben beschrieben festlegen, müssen Sie den Alias entfernen, um den Befehl snowsql
für SnowSQL verwenden zu können.
Ihre Konfigurationen migrieren¶
Unterschiede in den Konfigurationsdateien¶
SnowSQL
SnowSQL wird durch die entsprechende -Konfigurationsdatei konfiguriert, die eine Datei im TOML-Format ist, das Verbindungskonfigurationen, verschiedene Einstellungen des Tools und Variablen enthält, die in SQL-Abfragen verwendet werden können. Konfigurationen können in mehrere Speicherorte aufgeteilt werden, sodass Sie systemweite Standardeinstellungen definieren und diese für verschiedene Benutzer überschreiben können. Sie können auch Konfigurationen von benutzerdefinierten Speicherorten angeben, indem Sie die Befehlszeilenoption
--config
festlegen. Weitere Informationen dazu finden Sie unter Übersicht der Verbindungsparameter.Snowflake CLI
Snowflake CLI hat auch eine eigene TOML -Konfigurationsdatei, die Verbindungskonfigurationen und Einstellungen des Tools angibt. Sie erlaubt Ihnen nicht, Variablen für die spätere Verwendung in SQL-Abfragen zu definieren. Variablen in Snowflake CLI werden auf Projektebene in -Projektdefinitionsdateien definiert. Snowflake CLI verwendet nur eine Konfigurationsdatei, die sich standardmäßig im Stammverzeichnis des Benutzers befindet. Sie können auch Konfigurationen von benutzerdefinierten Speicherorten angeben, indem Sie die Befehlszeilenoption
--config
festlegen. Weitere Informationen finden Sie in der Referenz des Befehls snow.
Snowflake CLI-Standardkonfigurationsdatei suchen¶
Der Speicherort der Snowflake CLI-Standardkonfiguration hängt von Ihrem System ab und wird durch die in Speicherort der .toml-Konfigurationsdatei angegebene Reihenfolge bestimmt.
Um den Wert des Parameters
default_config_file_path
für Ihre Snowflake CLI-Installation zu finden, führen Sie densnow --info
-Befehl wie folgt aus:snow --info
[ ... { "key": "default_config_file_path", "value": "/<user_home>/.snowflake/config.toml" }, ... ]
Verbindungen von SnowSQL importieren¶
Sie können alle Ihre SnowSQL-Verbindungen mit dem snow helpers import-snowsql-connections
-Befehl importieren. Weitere Informationen finden Sie unter Verbindungen von SnowSQL importieren und in der Referenz des Befehls snow helpers import-snowsql-connections.
Die Standardverbindungskonfiguration manuell migrieren¶
Wenn Sie sich dafür entscheiden, keine Verbindungen über den snow helpers import-snowsql-connections
-Befehl zu importieren, können Sie die Standardverbindung manuell migrieren.
Bei der Angabe der Standardverbindung gibt es folgende Unterschiede:
SnowSQL
Die Standardverbindung wird in der SnowSQL -Konfigurationsdatei konfiguriert, und die Verbindungseinstellungen werden direkt im Abschnitt [Verbindungen] definiert.
Snowflake CLI
Die Standardverbindung wird in der Snowflake CLI -Konfigurationsdatei als benannte Verbindung mit dem Namen
default_connection_name
konfiguriert und auf oberster Ebene der Konfiguration (siehe Legen Sie die Standardverbindung fest) festgelegt. Sie können die Standardverbindung ändern, indem Sie densnow connection set-default
-Befehl verwenden.
Standardmäßig verwendet sowohl SnowSQL als auch Snowflake CLI die Standardverbindungskonfiguration, um eine Verbindung zu Snowflake herzustellen. Wenn Sie sie in SnowSQL konfiguriert haben, sollten Sie diese Konfiguration wie folgt in die Snowflake CLI-Konfigurationsdatei migrieren:
Öffnen Sie die SnowSQL-Konfigurationsdatei, und suchen Sie die Standardverbindungsparameter im Abschnitt
[Verbindungen]
. Sie benötigen die Werte der Verbindungsparameter, wenn Sie die Verbindung zu Snowflake CLI hinzufügen.Verwenden Sie eine der folgenden Methoden, um die Verbindung zu Snowflake CLI hinzuzufügen:
Bearbeiten Sie die Snowflake CLI-Konfigurationsdatei wie folgt manuell:
Öffnen Sie die Snowflake CLI-Konfigurationsdatei.
Fügen Sie einen
[connections.your_connection_name]
-Abschnitt hinzu, und kopieren Sie die Standardkonfigurationsdetails aus der SnowSQL-Konfigurationsdatei bzw. fügen Sie sie ein.Ändern Sie die Namen der folgenden Parameter wie gezeigt:
accountname
zuaccount
username
zuuser
dbname
zudatabase
schemaname
zuschema
warehousename
zuwarehouse
rolename
zurole
Fügen Sie die Einstellung
default_connection_name = "your_connection_name"
auf der obersten Ebene der Konfigurationsdatei (siehe Legen Sie die Standardverbindung fest) hinzu, oder legen Sie sie fest.
Verwenden Sie die Befehle
snow connection add
undsnow connection set-default
. Weitere Informationen dazu finden Sie unter Verwalten oder fügen Sie Ihre Verbindungen zu Snowflake mit den Befehlen snow connection hinzu.
Ihre benannten Verbindungskonfigurationen manuell migrieren¶
Wenn Sie den snow helpers import-snowsql-connections
-Befehl nicht verwenden, um Ihre Verbindungen zu importieren, können Sie diese manuell migrieren.
Bei der Angabe von benannten Verbindungen gibt es folgende Unterschiede:
SnowSQL
Benannte Verbindungen werden in der SnowSQL -Konfigurationsdatei konfiguriert. Jede benannte Verbindung hat ihren eigenen
[connections.your_connection_name]
-Abschnitt.Snowflake CLI
Snowflake CLI verwendet fast das gleiche Format zum Konfigurieren benannter Verbindungen. Sie können sie aus der SnowSQL-Konfiguration kopieren und die Parameter wie in der Standardverbindung angegeben umbenennen.
Standardmäßig können Sie mit SnowSQL und Snowflake CLI eine benannte Verbindung verwenden, um eine Verbindung zu Snowflake herzustellen. Wenn Sie diese benannten Verbindungen weiterhin in SnowSQL verwenden möchten, sollten Sie sie in die Snowflake CLI-Konfigurationsdatei migrieren:
Öffnen Sie die SnowSQL-Konfigurationsdatei, und suchen Sie die Abschnitte
[connections.your_connection_name]
. Sie benötigen die Werte der Verbindungsparameter, wenn Sie die Verbindungen zu Snowflake CLI hinzufügen.Verwenden Sie eine der folgenden Methoden, um die Verbindung zu Snowflake CLI hinzuzufügen:
Bearbeiten Sie die Snowflake CLI-Konfigurationsdatei wie folgt manuell:
Öffnen Sie die Snowflake CLI-Konfigurationsdatei.
Fügen Sie einen
[connections.your_connection_name]
-Abschnitt hinzu, und kopieren Sie die Standardkonfigurationsdetails aus der SnowSQL-Konfigurationsdatei bzw. fügen Sie sie ein.Ändern Sie die Namen der folgenden Parameter wie gezeigt:
accountname
zuaccount
username
zuuser
dbname
zudatabase
schemaname
zuschema
warehousename
zuwarehouse
rolename
zurole
Verwenden Sie den Befehl
snow connection add
. Weitere Informationen dazu finden Sie unter Verwalten oder fügen Sie Ihre Verbindungen zu Snowflake mit den Befehlen snow connection hinzu.
Protokolle konfigurieren¶
Informationen zur manuellen Konfiguration der Protokollierung für Snowflake CLI finden Sie in der Protokollierung konfigurieren-Dokumentation.
Ihre Variablen migrieren¶
Tipp
Nützliche Links:
Allgemeine Informationen zu Projektdefinitionsdateien-Dokumentation
Variablen in SQL verwenden-Dokumentation
Snowflake CLI unterstützt nicht die Angabe von Variablen in der entsprechenden Konfigurationsdatei. Stattdessen wird ein projektorientierterer Ansatz verwendet, bei dem Variablen mit bestimmten Projekten verknüpft werden. Snowflake CLI bietet die Möglichkeit, Variablen in snowflake.yml
-Projektdefinitionsdateien zu definieren. Sie können diese Variablen dann in SQL-Abfragen wie unter Allgemeine Informationen zu Projektdefinitionsdateien beschrieben verwenden.
Um Variablen für Ihr Projekt zu definieren, fügen Sie einen
env
-Abschnitt zursnowflake.yml
-Datei des Projekts hinzu, und schließen Sie alle Variablen ein, die Sie in Ihren Abfragen verwenden möchten.
Das folgende Beispiel definiert zwei Variablen: database
und role
:
definition_version: 2
env:
database: "dev"
role: "eng_rl"
Ihre Umgebungsvariablen manuell migrieren¶
Tipp
Nützliche Links:
Umgebungsvariablen für Snowflake-Anmeldeinformationen verwenden-Dokumentation
Variablen in SQL verwenden-Dokumentation
In SnowSQL können Sie Umgebungsvariablen verwenden (wie beispielsweise $SNOWSQL_ACCOUNT
und $SNOWSQL_DATABASE
), anstatt beim Starten einer Verbindung Befehlszeilenparameter anzugeben. Dieser Ansatz bietet eine weitere Möglichkeit, Standardverbindungskonfigurationen festzulegen. Snowflake CLI bietet die gleiche Funktionalität, verwendet aber andere Namen für diese Parameter und ermöglicht es Ihnen, viele weitere Konfigurationsparameter über Umgebungsvariablen zu überschreiben. Wenn Sie Umgebungsvariablen verwenden, um eine Verbindung zu Snowflake herzustellen, finden Sie weitere Informationen unter Herstellen einer Verbindung zu Snowflake mit Umgebungsvariablen. Informieren Sie sich auch über Möglichkeiten für das Konfigurieren von Umgebungsvariablen in der Snowflake CLI-Dokumentation.
Mit Snowflake verbinden¶
Unter der Voraussetzung, dass Sie Ihre Konfiguration migriert haben, können Sie über Snowflake CLI eine Verbindung zu Snowflake mit ähnlichen Methoden herstellen, die von SnowSQL, einschließlich der folgenden, verwendet wurden:
Standardverbindung verwenden¶
Für die Verbindung mit der in Ihrer Konfigurationsdatei definierten Standardkonfiguration:
SnowSQL
snowsql -q "select 1"
Snowflake CLI
snow sql -q "select 1"
Eine Verbindung mit Befehlszeilenoptionen verwenden¶
So verbinden Sie sich mit der in Ihrer Konfigurationsdatei definierten Standardkonfiguration und überschreiben Parameter mit Befehlszeilenoptionen:
SnowSQL
snowsql --username myname -q "select 1"
Snowflake CLI
snow sql --username myname -q "select 1"
Eine Liste der möglichen Befehlszeilenoptionen finden Sie unter snow sql. Beachten Sie, dass einige Optionen andere Namen haben als in SnowSQL.
Eine benannte Konfiguration verwenden¶
So stellen Sie eine Verbindung mithilfe einer benannten Konfiguration her, die in Ihrer Konfigurationsdatei definiert ist:
SnowSQL
snowsql -c dev -q "select 1"
Snowflake CLI
snow sql -c dev -q "select 1"
Nur Befehlszeilenoptionen verwenden¶
So stellen Sie eine Verbindung nur über Befehlszeilenoptionen anstelle einer konfigurierten Verbindung her:
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"
Beachten Sie, dass Snowflake CLI die Option
--temporary-connection
für diese Methode erfordert.
Umgebungsvariablen verwenden¶
Um eine Verbindung über die Standardverbindung herzustellen, übergeben Sie einige Parameter als Umgebungsvariablen:
SnowSQL
export SNOWSQL_USER=myuser snowsql -q "select 1"
Snowflake CLI
export SNOWFLAKE_USER=myuser snow sql -q "select 1"
Beachten Sie, dass sich die Namen der Umgebungsvariablen unterscheiden können. Weitere Informationen dazu finden Sie unter Umgebungsvariablen für Snowflake-Anmeldeinformationen verwenden.
Eine Mischung aus Verbindungen, Umgebungsvariablen und Befehlszeilenoptionen verwenden¶
So stellen Sie eine Verbindung mithilfe einer gemischten Vorgehensweise mit einer benannten Verbindung, Umgebungsvariablen und Befehlszeilenoptionen her:
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"
Sie können diese Methode sowohl mit der Standardverbindung als auch mit benannten Verbindungen verwenden.
SQL-Abfragen ausführen¶
SQL-Abfragen aus verschiedenen Eingaben ausführen¶
Snowflake CLI lässt Sie SQL-Abfragen ausführen, bei denen Eingaben verwendet werden, die denen ähnlich sind, die von SnowSQL verarbeitet werden. Die folgenden Beispiele führen SQL-Abfragen mit verschiedenen Eingaben aus.
Ausführen von Abfragen mit -Befehlszeilenparametern:
SnowSQL
snowsql -q "select 1"
Snowflake CLI
snow sql -q "select 1"
Ausführen von Abfragen aus einer Datei:
SnowSQL
snowsql -f test.sql
Snowflake CLI
snow sql -f test.sql
Ausführen von Abfragen aus der Standardeingabe:
SnowSQL
cat test.sql | snowsql
Snowflake CLI
cat test.sql | snow sql --stdin
Abfrageergebnisse in einer JSON-Datei speichern¶
Snowflake CLI unterstützt derzeit nicht alle SnowSQL-Optionen für die Ausgabeformatierung. Mit Snowflake CLI können Sie Abfrageergebnisse entweder als formatierte Tabelle oder als JSON speichern. Obwohl CSV und andere Formate noch nicht verfügbar sind, können Sie externe Tools wie z. B. jq verwenden, um Daten von JSON in andere Formate zu konvertieren.
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
Abfragen mithilfe von Variablen ausführen¶
In SnowSQL und in Snowflake CLI können Sie Variablen in Abfragen verwenden. In SnowSQL können Sie Variablen aus Befehlszeilenoptionen, aus der entsprechenden Konfigurationsdatei und mit einigen wenigen integrierten Variablen verwenden. Obwohl Snowflake CLI keine Variablen in der entsprechenden Konfigurationsdatei oder die Verwendung von integrierten Variablen unterstützt, unterstützt es die Angabe von Parametern mit Befehlszeilenoptionen und die Angabe von Variablen in Projektdefinitionsdateien. Weitere Informationen zur Migration Ihrer SnowSQL-Variablen der Konfigurationsdatei finden Sie unter Ihre Variablen migrieren.
Nachdem Sie Ihre Variablen von der SnowSQL-Konfiguration migriert haben, können Sie Snowflake CLI-Abfragen unter Verwendung von Variablen aus Befehlszeilenoptionen und Projektdefinitionen ausführen.
Beachten Sie bei der Verwendung von Variablen die folgenden wichtigen Unterschiede zwischen SnowSQL und Snowflake CLI:
Sie verwenden unterschiedliche Syntaxen für die Variablenersetzungen. SnowSQL verwendet die Syntax
&variable
oder&{variable}
, während Snowflake CLI<% variable %>
verwendet. Die Syntax von SnowSQL wird derzeit unterstützt, ist aber veraltet.Snowflake CLI aktiviert automatisch die Variablenersetzung, sodass Sie sie nicht explizit wie bei SnowSQL aktivieren müssen.
Variablennamen in Snowflake CLI-Projektdefinitionsdateien müssen, wie gezeigt, mit dem Präfix
ctx.env
versehen werden:
Die folgenden Beispiele zeigen die Unterschiede bei der Ausführung von SQL-Abfragen mit Variablen:
Führen Sie eine Abfrage unter Verwendung von Variablen in Befehlszeilenoptionen aus, wobei
x
der Name der Variable ist:SnowSQL
snowsql \ -o variable_substitution=true \ -q "select &x" \ -D x=1
Snowflake CLI
snow sql \ -q "select <% x %>" \ -D x=1
Snowflake CLI (unter Verwendung einer veralteten Syntax, um schnelle Migrationen zu ermöglichen)
snow sql \ -q "select &x" \ -D x=1
Führen Sie eine Abfrage unter Verwendung von Variablen in einer SnowSQL-Konfiguration im Vergleich zu einer Snowflake CLI-Projektdefinitionsdatei aus:
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 (unter Verwendung einer veralteten Syntax, um schnelle Migrationen zu ermöglichen)
# save variables to project definition echo "definition_version: 2 env: xyz: Hello World" > snowflake.yml # execute query snow sql -q "select '&{ctx.env.xyz}'"
SnowSQL- und Snowflake CLI-Feature-Parität¶
Die folgende Tabelle zeigt, wie SnowSQL-Features in Snowflake CLI integriert sind.
SnowSQL-Feature |
Snowflake CLI-Implementierung |
---|---|
Globale Konfigurationsdatei ( |
Konfigurations- und Verbindungsdateien verwenden ein TOML-Format und werden im |
Die Verbindungskonfiguration über Befehlszeilenoptionen unterstützt alles, was auch der Snowflake Connector für Python unterstützt. |
Snowflake CLI unterstützt die Befehlszeilenoptionen wie in der snow connection add-Referenz zu -Befehlen beschrieben. |
Testen der Verbindung über die |
Derzeit führt zwar der Befehl |
Möglichkeit, ein JWT-Token zu generieren und anzuzeigen, basierend auf den Parametern |
Verwenden Sie den Befehl |
Führen Sie eine Abfrage aus einer Datei mit den Optionen |
Verwenden Sie den Befehl |
Führen Sie eine Abfrage von der Befehlszeileneingabe mit den Optionen |
Verwenden Sie den Befehl |
Abfragen von Vorlagen mit der Option, Variablen über die Befehlszeilenoption |
Snowflake CLI unterstützt SQL-Variablen in SQL-Vorlagen und in snowflake.yml-Projektdefinitionsdateien. Weitere Informationen dazu finden Sie unter Verwenden von Variablen für SQL-Vorlagen und Speichern von Variablen in der snowflake.yml-Projektdefinitionsdatei. |
Verwenden Sie den interaktiven Modus. Die Unterstützung für asynchrone Abfragen wird zu einem späteren Zeitpunkt hinzugefügt. |
|
Einschließen oder Quelle von einer oder mehreren SQL-Dateien aus einer anderen SQL-Datei: !source file1.sql;
!source file2.sql;
!source http://example.com/my.sql
|
Snowflake CLI unterstützt die Verschachtelung von SQL-Skripten mit Vorlagenunterstützung. Weitere Informationen dazu finden Sie unter Arbeiten mit SQL-Abfragebefehlen. |
Anzeige von EXIT_ON_ERROR-Fehlercodes. |
Verwenden Sie die Befehlszeilenoption |