USE - Amazon Redshift

Amazon Redshift wird UDFs ab dem 1. November 2025 die Erstellung von neuem Python nicht mehr unterstützen. Wenn Sie Python verwenden möchten UDFs, erstellen Sie das UDFs vor diesem Datum liegende. Bestehendes Python UDFs wird weiterhin wie gewohnt funktionieren. Weitere Informationen finden Sie im Blogbeitrag.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

USE

Ändert die Datenbank, in der Abfragen ausgeführt werden. SHOW USE verweist auf die Datenbank, die zuletzt mit dem USE-Befehl verwendet wurde. RESET USE setzt die verwendete Datenbank zurück. Das heißt, wenn die Datenbank nicht in der SQL angegeben ist, werden die Objekte in der aktuellen Datenbank gesucht.

Syntax

USE database

Beispiele

Angenommen, es gibt drei Datenbanken, dev undpdb, undpdb2. Nehmen wir an, dass die öffentlichen Schemas jeder Datenbank zwei Tabellen t enthalten. Fügen Sie zunächst Daten in Tabellen verschiedener Datenbanken ein:

dev=# insert into dev.public.t values (1); INSERT 0 1 dev=# insert into pdb.public.t values (2); INSERT 0 1

Ohne explizit eine Datenbank einzurichten, verwendet das System Ihre verbundene Datenbank. Überprüfen Sie Ihren aktuellen Datenbankkontext:

dev=# show use; Use Database (1 row) dev=> show search_path; search_path $user, public (1 row)

Wenn Sie eine Tabelle abfragen, t ohne eine Datenbank anzugeben, verwendet das System die Tabelle in Ihrer aktuellen Datenbank:

dev=# select * from t; c ---- 1 (1 row)

Verwenden Sie den use Befehl, um zwischen den Datenbanken zu wechseln, ohne Ihre Verbindung zu ändern:

dev=# use pdb; USE dev=# show use; Use Database -------------- pdb (1 row) dev=# select * from t; id ---- 2 (1 row)

Sie können das Schema auch explizit angeben:

dev=# select * from public.t; id ---- 2 (1 row)

Sie können jetzt Tabellen in verschiedenen Schemas in Ihrer aktuellen Datenbank erstellen:

dev=# create table s1.t(id int); CREATE TABLE dev=# insert into pdb.s1.t values (3); INSERT 0 1

Der Suchpfad bestimmt, auf welche Schemaobjekte zugegriffen wird, wenn Sie kein Schema angeben:

dev=# set search_path to public, s1; SET dev=# select * from t; id ---- 2 (1 row)

Ändern Sie die Reihenfolge der Schemas, um auf verschiedene Tabellen zuzugreifen:

dev=# set search_path to s1, public; SET dev=# show search_path; search_path ------------- s1, public (1 row) dev=# select * from t; id ---- 3 (1 row)

Wechseln Sie zu einer anderen Datenbank und behalten Sie dabei Ihre ursprüngliche Verbindung bei:

dev=# show use; Use Database -------------- pdb (1 row) dev=# use pdb2; USE dev=# show use; Use Database -------------- pdb2 (1 row)

Wenn Sie zwischen den Datenbanken wechseln, wird der Suchpfad auf die Standardwerte zurückgesetzt:

dev=# show search_path; search_path --------------- $user, public (1 row)

Erstellen Sie eine Tabelle und fügen Sie Daten in Ihre aktuelle Datenbank ein:

dev=# create table pdb2.public.t(id int); CREATE TABLE dev=# insert into pdb2.public.t values (4); INSERT 0 1 dev=# select * from t; id ---- 4 (1 row)

Bei Transaktionen können Sie in die aktuelle Datenbank schreiben und aus jeder Datenbank lesen, wobei die dreiteilige Notation verwendet wird. Dazu gehört auch die verbundene Datenbank:

dev=# show use; Use Database -------------- pdb2 (1 row) dev=# BEGIN; BEGIN dev=# select * from t; id ---- 4 (1 row) dev=# insert into t values (5); INSERT 0 1 dev=# select * from t; id ---- 4 5 (2 rows) dev=# select * from pdb.public.t; id ---- 2 (1 row) dev=# select * from dev.public.t; id ---- 1 (1 row)

Auf Ihre verbundene Datenbank zurücksetzen. Beachten Sie, dass dabei nicht nur die zuvor verwendete Datenbankpdb, sondern auch die verbundene Datenbank wiederhergestellt wird. Der Suchpfad ändert sich ebenfalls auf den Standardpfad:

dev=# RESET USE; RESET dev=# select * from t; c ---- 1 (1 row) dev=# show use; Use Database -------------- (1 row) dev=# show search_path; search_path --------------- $user, public (1 row)

Sie können Datenbanken zu Beginn einer Transaktion ändern, jedoch nicht nach dem Ausführen von Abfragen:

dev=# BEGIN; BEGIN dev=# use pdb; USE dev=# use pdb2; USE dev=# use pdb; USE dev=# select * from t; id ---- 2 (1 row) dev=# use pdb2; ERROR: USEd Database cannot be set or reset inside a transaction after another command. dev=# rollback; ROLLBACK (1 row)

Beispiel für einen Datenkatalog

Erstellen Sie zunächst Tabellen in verschiedenen Schemas und Katalogen, um katalogübergreifende Abfragen zu demonstrieren. Erstellen Sie zunächst Tabellen in der verbundenen Datenbank.

dev=# CREATE TABLE dev.public.t (col INT); dev=# INSERT INTO dev.public.t VALUES (1); dev=# CREATE SCHEMA write_schema; dev=# CREATE TABLE dev.write_schema.t (state char (2)); dev=# INSERT INTO dev.write_schema.t VALUES ('WA');

Erstellen Sie jetzt ähnliche Tabellen in einem anderen Katalog. Dies zeigt, wie Sie mit katalogübergreifenden Datenbanken arbeiten.

dev=# CREATE TABLE my_db@my_catalog.public.t (col INT); dev=# INSERT INTO my_db@my_catalog.public.t VALUES (100); dev=# CREATE SCHEMA my_db@my_catalog.write_schema; dev=# CREATE TABLE my_db@my_catalog.write_schema.t (state char (2)); dev=# INSERT INTO my_db@my_catalog.write_schema.t VALUES ('CA');

Überprüfen Sie den aktuellen Datenbankkontext. Ohne explizit eine Datenbank festzulegen, verwendet das System die verbundene Datenbank.

dev=# SHOW USE; Use Database -------------- (1 row) dev=# SHOW search_path; search_path --------------- $user, public (1 row) dev=# SELECT * FROM t; col ----- 1 (1 row)

Stellen Sie die USEd Datenbank so ein, dass sie die Tabellen in einem anderen Katalog abfragt.

dev=# USE my_db@my_catalog; dev=# SHOW USE; Use Database ------------------------------------- my_db@my_catalog (1 row) dev=# SHOW search_path; search_path --------------- $user, public (1 row)

Bei der Abfrage von Tabelle t stammen die Ergebnisse aus der katalogübergreifenden Datenbank.

dev=# SELECT * FROM t; col ----- 100 (1 row) dev=# SELECT * FROM public.t; col ----- 100 (1 row) dev=# SELECT * FROM my_db@my_catalog.public.t; col ----- 100 (1 row)

Ändern Sie den Suchpfad, um auf Tabellen in verschiedenen Schemas innerhalb der Datenbank zuzugreifen. USEd

dev=# SET search_path to write_schema; dev=# SHOW search_path; search_path -------------- write_schema (1 row) dev=# SELECT * FROM t; state ------- CA (1 row) dev=# SELECT * FROM write_schema.t; state ------- CA (1 row) dev=# SELECT * FROM my_db@my_catalog.write_schema.t; state ------- CA (1 row)

Auch wenn USE auf eine katalogübergreifende Datenbank eingestellt ist, ist es dennoch möglich, die Originaldatenbank explizit abzufragen.

dev=# SELECT * FROM dev.write_schema.t; state ------- WA (1 row)

Setzen Sie die USEd Datenbank zurück, sodass sie erneut auf Objekte in der verbundenen Datenbank verweist.

dev=# RESET USE; dev=# SHOW USE; Use Database -------------- (1 row)

Beachten Sie, dass der search_path zurückgesetzt wird, wenn USE zurückgesetzt wird.

dev=# SHOW search_path; search_path --------------- $user, public (1 row)

Nach dem Zurücksetzen beziehen sich Abfragen nun auf die ursprünglich verbundene Datenbank.

dev=# SELECT * FROM t; col ----- 1 (1 row) dev=# SELECT * FROM public.t; col ----- 1 (1 row) dev=# SELECT * FROM dev.public.t; col ----- 1 (1 row)

Sie können den Suchpfad in der ursprünglichen Datenbank ändern, um auf verschiedene Schemas zuzugreifen.

dev=# SET search_path to write_schema; dev=# SHOW search_path; search_path -------------- write_schema (1 row) dev=# SELECT * FROM t; state ------- WA (1 row) dev=# SELECT * FROM write_schema.t; state ------- WA (1 row) dev=# SELECT * FROM dev.write_schema.t; state ------- WA (1 row)