Exemples d’utilisation d’une requête entre bases de données - Amazon Redshift

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.

Exemples d’utilisation d’une requête entre bases de données

Utilisez les exemples suivants pour apprendre à configurer une requête entre bases de données qui fait référence à une base de données Amazon Redshift.

Pour commencer, créez les bases de données db1 et db2 et les utilisateurs user1 et user2 dans votre cluster Amazon Redshift. Pour plus d’informations, consultez CREATE DATABASE et CREATE USER.

--As user1 on db1 CREATE DATABASE db1; CREATE DATABASE db2; CREATE USER user1 PASSWORD 'Redshift01'; CREATE USER user2 PASSWORD 'Redshift01';

Comme user1 sur db1, créez une table, accordez des privilèges d’accès à user2 et insérez des valeurs dans table1. Pour plus d’informations, consultez GRANT et INSERT.

--As user1 on db1 CREATE TABLE table1 (c1 int, c2 int, c3 int); GRANT SELECT ON table1 TO user2; INSERT INTO table1 VALUES (1,2,3),(4,5,6),(7,8,9);

En tant que user2 sur db2, exécutez une requête entre base de données sur db2 en utilisant une notation en trois parties.

--As user2 on db2 SELECT * from db1.public.table1 ORDER BY c1; c1 | c2 | c3 ---+-----+---- 1 | 2 | 3 4 | 5 | 6 7 | 8 | 9 (3 rows)

En tant que user2 sur db2, créez un schéma externe et exécutez une requête entre bases de données sur db2 en utilisant une notation de schéma externe.

--As user2 on db2 CREATE EXTERNAL SCHEMA db1_public_sch FROM REDSHIFT DATABASE 'db1' SCHEMA 'public'; SELECT * FROM db1_public_sch.table1 ORDER BY c1; c1 | c2 | c3 ----+----+---- 1 | 2 | 3 4 | 5 | 6 7 | 8 | 9 (3 rows)

Pour créer différentes vues et accorder des autorisations, faites comme suit en tant que user1 sur db1.

--As user1 on db1 CREATE VIEW regular_view AS SELECT c1 FROM table1; GRANT SELECT ON regular_view TO user2; CREATE MATERIALIZED VIEW mat_view AS SELECT c2 FROM table1; GRANT SELECT ON mat_view TO user2; CREATE VIEW late_bind_view AS SELECT c3 FROM public.table1 WITH NO SCHEMA BINDING; GRANT SELECT ON late_bind_view TO user2;

En tant que user2 sur db2, exécutez la requête entre bases de données suivante en utilisant une notation en trois parties pour afficher la vue particulière.

--As user2 on db2 SELECT * FROM db1.public.regular_view; c1 ---- 1 4 7 (3 rows) SELECT * FROM db1.public.mat_view; c2 ---- 8 5 2 (3 rows) SELECT * FROM db1.public.late_bind_view; c3 ---- 3 6 9 (3 rows)

En tant que user2 sur db2, exécutez la requête entre bases de données suivante en utilisant une notation de schéma externe pour interroger la vue à liaison tardive.

--As user2 on db2 SELECT * FROM db1_public_sch.late_bind_view; c3 ---- 3 6 9 (3 rows)

En tant que user2 sur db2, exécutez la commande suivante à l’aide de tables connectées dans une seule requête.

--As user2 on db2 CREATE TABLE table1 (a int, b int, c int); INSERT INTO table1 VALUES (1,2,3), (4,5,6), (7,8,9); SELECT a AS col_1, (db1.public.table1.c2 + b) AS sum_col2, (db1.public.table1.c3 + c) AS sum_col3 FROM db1.public.table1, table1 WHERE db1.public.table1.c1 = a; col_1 | sum_col2 | sum_col3 ------+----------+---------- 1 | 4 | 6 4 | 10 | 12 7 | 16 | 18 (3 rows)

L’exemple suivant répertorie toutes les bases de données du cluster.

select database_name, database_owner, database_type from svv_redshift_databases where database_name in ('db1', 'db2'); database_name | database_owner | database_type ---------------+----------------+--------------- db1 | 100 | local db2 | 100 | local (2 rows)

L’exemple suivant répertorie les schémas Amazon Redshift de toutes les bases de données du cluster.

select database_name, schema_name, schema_owner, schema_type from svv_redshift_schemas where database_name in ('db1', 'db2'); database_name | schema_name | schema_owner | schema_type ---------------+--------------------+--------------+------------- db1 | pg_catalog | 1 | local db1 | public | 1 | local db1 | information_schema | 1 | local db2 | pg_catalog | 1 | local db2 | public | 1 | local db2 | information_schema | 1 | local (6 rows)

L’exemple suivant répertorie les tables ou vues Amazon Redshift de toutes les bases de données du cluster.

select database_name, schema_name, table_name, table_type from svv_redshift_tables where database_name in ('db1', 'db2') and schema_name in ('public'); database_name | schema_name | table_name | table_type ---------------+-------------+---------------------+------------ db1 | public | late_bind_view | VIEW db1 | public | mat_view | VIEW db1 | public | mv_tbl__mat_view__0 | TABLE db1 | public | regular_view | VIEW db1 | public | table1 | TABLE db2 | public | table2 | TABLE (6 rows)

L’exemple suivant répertorie les schémas Amazon Redshift et externes de toutes les bases de données du cluster.

select database_name, schema_name, schema_owner, schema_type from svv_all_schemas where database_name in ('db1', 'db2') ; database_name | schema_name | schema_owner | schema_type ---------------+--------------------+--------------+------------- db1 | pg_catalog | 1 | local db1 | public | 1 | local db1 | information_schema | 1 | local db2 | pg_catalog | 1 | local db2 | public | 1 | local db2 | information_schema | 1 | local db2 | db1_public_sch | 1 | external (7 rows)

L’exemple suivant répertorie les tables Amazon Redshift et externes de toutes les bases de données du cluster.

select database_name, schema_name, table_name, table_type from svv_all_tables where database_name in ('db1', 'db2') and schema_name in ('public'); database_name | schema_name | table_name | table_type ---------------+-------------+---------------------+------------ db1 | public | regular_view | VIEW db1 | public | mv_tbl__mat_view__0 | TABLE db1 | public | mat_view | VIEW db1 | public | late_bind_view | VIEW db1 | public | table1 | TABLE db2 | public | table2 | TABLE (6 rows)