Amazon Redshift non supporterà più la creazione di nuovi Python a UDFs partire dal 1° novembre 2025. Se vuoi usare Python UDFs, crea la UDFs data precedente a quella data. Python esistente UDFs continuerà a funzionare normalmente. Per ulteriori informazioni, consulta il post del blog
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
USE
Modifica il database su cui vengono eseguite le query. SHOW USE punta al database che è stato utilizzato più di recente con il comando USE. RESET USE ripristina il database utilizzato. Ciò significa che se il database non è specificato nell'SQL, gli oggetti vengono cercati nel database corrente.
Sintassi
USE database
Esempi
Supponiamo che esistano tre database dev
epdb
, epdb2
. Lascia che ci siano due tabelle t
negli schemi pubblici di ciascuno dei database. Innanzitutto, inserisci i dati nelle tabelle di diversi database:
dev=# insert into dev.public.t values (1); INSERT 0 1 dev=# insert into pdb.public.t values (2); INSERT 0 1
Senza impostare esplicitamente un database, il sistema utilizza il database connesso. Controlla il contesto attuale del database:
dev=# show use; Use Database (1 row) dev=> show search_path; search_path $user, public (1 row)
Quando si esegue una query su una tabella t
senza specificare un database, il sistema utilizza la tabella del database corrente:
dev=# select * from t; c ---- 1 (1 row)
Usa il use
comando per cambiare database senza modificare la connessione:
dev=# use pdb; USE dev=# show use; Use Database -------------- pdb (1 row) dev=# select * from t; id ---- 2 (1 row)
Puoi anche specificare esplicitamente lo schema:
dev=# select * from public.t; id ---- 2 (1 row)
Ora puoi creare tabelle in diversi schemi all'interno del tuo database corrente:
dev=# create table s1.t(id int); CREATE TABLE dev=# insert into pdb.s1.t values (3); INSERT 0 1
Il percorso di ricerca determina a quali oggetti dello schema si accede quando non si specifica uno schema:
dev=# set search_path to public, s1; SET dev=# select * from t; id ---- 2 (1 row)
Modifica l'ordine degli schemi per accedere a diverse tabelle:
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)
Passa a un altro database mantenendo la connessione originale:
dev=# show use; Use Database -------------- pdb (1 row) dev=# use pdb2; USE dev=# show use; Use Database -------------- pdb2 (1 row)
Quando si cambia database, il percorso di ricerca viene ripristinato ai valori predefiniti:
dev=# show search_path; search_path --------------- $user, public (1 row)
Crea una tabella e inserisci i dati nel tuo database corrente:
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)
Nelle transazioni, è possibile scrivere nel database corrente e leggere da qualsiasi database utilizzando una notazione in tre parti. Ciò include anche il database connesso:
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)
Ripristina il database connesso. Tieni presente che questo non solo ripristina il database utilizzato in precedenzapdb
, ma ripristina anche il database connesso. Anche il percorso di ricerca passa a quello predefinito:
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)
È possibile modificare i database all'inizio di una transazione, ma non dopo aver eseguito le query:
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)
Esempio di Data Catalog
Innanzitutto, crea tabelle in schemi e cataloghi diversi per dimostrare le interrogazioni tra cataloghi. Inizia creando tabelle nel database connesso.
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');
Ora, crea tabelle simili in un catalogo diverso. Questo dimostra come lavorare con i database tra cataloghi.
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');
Controlla il contesto corrente del database. Senza impostare esplicitamente un database, il sistema utilizza il database connesso.
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)
Imposta il USEd database per interrogare le tabelle di un catalogo diverso.
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)
Quando si interroga la tabella t, i risultati provengono dal database intercatalogo.
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)
Modifica il percorso di ricerca per accedere alle tabelle in diversi schemi all'interno del database. 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)
Anche se USE è impostato su un database a più cataloghi, è comunque possibile interrogare in modo esplicito il database originale.
dev=# SELECT * FROM dev.write_schema.t; state ------- WA (1 row)
Reimposta il USEd database in modo che faccia nuovamente riferimento agli oggetti nel database connesso.
dev=# RESET USE; dev=# SHOW USE; Use Database -------------- (1 row)
Nota che search_path viene ripristinato quando USE viene ripristinato.
dev=# SHOW search_path; search_path --------------- $user, public (1 row)
Dopo il ripristino, le query ora si riferiscono al database connesso originale.
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)
È possibile modificare il percorso di ricerca nel database originale per accedere a schemi diversi.
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)