Amazon Redshift ne prendra plus en charge la création de nouveaux Python UDFs à compter du 1er novembre 2025. Si vous souhaitez utiliser Python UDFs, créez la version UDFs antérieure à cette date. Le Python existant UDFs continuera à fonctionner normalement. Pour plus d'informations, consultez le billet de blog
Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
USE
Modifie la base de données sur laquelle les requêtes sont exécutées. SHOW USE pointe vers la base de données la plus récemment utilisée avec la commande USE. RESET USE réinitialise la base de données utilisée. Cela signifie que si la base de données n'est pas spécifiée dans le SQL, les objets sont recherchés dans la base de données en cours.
Syntaxe
USE database
Exemples
Supposons qu'il existe trois bases de donnéespdb
, dev
et etpdb2
. Supposons qu'il y ait deux tables t
dans les schémas publics de chacune des bases de données. Tout d'abord, insérez les données dans les tables de différentes bases de données :
dev=# insert into dev.public.t values (1); INSERT 0 1 dev=# insert into pdb.public.t values (2); INSERT 0 1
Sans définir explicitement de base de données, le système utilise votre base de données connectée. Vérifiez le contexte actuel de votre base de données :
dev=# show use; Use Database (1 row) dev=> show search_path; search_path $user, public (1 row)
Lorsque vous interrogez une table t
sans spécifier de base de données, le système utilise la table dans votre base de données actuelle :
dev=# select * from t; c ---- 1 (1 row)
Utilisez la use
commande pour changer de base de données sans modifier votre connexion :
dev=# use pdb; USE dev=# show use; Use Database -------------- pdb (1 row) dev=# select * from t; id ---- 2 (1 row)
Vous pouvez également spécifier le schéma de manière explicite :
dev=# select * from public.t; id ---- 2 (1 row)
Vous pouvez désormais créer des tables dans différents schémas au sein de votre base de données actuelle :
dev=# create table s1.t(id int); CREATE TABLE dev=# insert into pdb.s1.t values (3); INSERT 0 1
Le chemin de recherche détermine les objets du schéma auxquels vous accédez lorsque vous ne spécifiez aucun schéma :
dev=# set search_path to public, s1; SET dev=# select * from t; id ---- 2 (1 row)
Modifiez l'ordre des schémas pour accéder aux différentes tables :
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)
Passez à une autre base de données tout en conservant votre connexion d'origine :
dev=# show use; Use Database -------------- pdb (1 row) dev=# use pdb2; USE dev=# show use; Use Database -------------- pdb2 (1 row)
Lorsque vous changez de base de données, le chemin de recherche est réinitialisé par défaut :
dev=# show search_path; search_path --------------- $user, public (1 row)
Créez une table et insérez des données dans votre base de données actuelle :
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)
Dans les transactions, vous pouvez écrire dans la base de données actuelle et lire dans n'importe quelle base de données à l'aide d'une notation en trois parties. Cela inclut également la base de données connectée :
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)
Réinitialisez votre base de données connectée. Notez que cela revient non seulement à la base de données utilisée précédemmentpdb
, mais également à la base de données connectée. Le chemin de recherche est également remplacé par celui par défaut :
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)
Vous pouvez modifier les bases de données au début d'une transaction, mais pas après avoir exécuté des requêtes :
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)
Exemple de catalogue de données
Créez d'abord des tables dans différents schémas et catalogues pour illustrer les requêtes entre catalogues. Commencez par créer des tables dans la base de données connectée.
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');
Créez maintenant des tables similaires dans un autre catalogue. Cela montre comment utiliser des bases de données à catalogues multiples.
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');
Vérifiez le contexte actuel de la base de données. Sans définir explicitement de base de données, le système utilise la base de données connectée.
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)
Configurez la USEd base de données pour qu'elle interroge les tables d'un autre catalogue.
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)
Lorsque vous interrogez la table t, les résultats proviennent de la base de données inter-catalogues.
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)
Modifiez le chemin de recherche pour accéder aux tables des différents schémas de la base de USEd données.
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)
Même si USE est défini sur une base de données inter-catalogues, il est toujours possible d'interroger explicitement la base de données d'origine.
dev=# SELECT * FROM dev.write_schema.t; state ------- WA (1 row)
Réinitialisez la USEd base de données pour qu'elle fasse à nouveau référence aux objets de la base de données connectée.
dev=# RESET USE; dev=# SHOW USE; Use Database -------------- (1 row)
Notez que le search_path est réinitialisé lorsque USE est réinitialisé.
dev=# SHOW search_path; search_path --------------- $user, public (1 row)
Après la réinitialisation, les requêtes font désormais référence à la base de données connectée d'origine.
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)
Vous pouvez modifier le chemin de recherche dans la base de données d'origine pour accéder à différents schémas.
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)