Contoh menggunakan kueri lintas basis data - Amazon Redshift

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Contoh menggunakan kueri lintas basis data

Gunakan contoh berikut untuk membantu mempelajari cara menyiapkan kueri lintas basis data yang mereferensikan database Amazon Redshift.

Untuk memulai, buat database db1 dan dan pengguna db2 user1 dan user2 di klaster Amazon Redshift Anda. Lihat informasi yang lebih lengkap di BUAT BASIS DATA dan BUAT PENGGUNA.

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

Seperti user1 padadb1, buat tabel, berikan hak akses keuser2, dan masukkan nilai ke dalamtable1. Lihat informasi yang lebih lengkap di HIBAH dan 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);

Seperti user2 padadb2, jalankan kueri lintas basis data dalam db2 menggunakan notasi tiga bagian.

--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)

Seperti user2 padadb2, buat skema eksternal dan jalankan kueri lintas basis data dalam db2 menggunakan notasi skema eksternal.

--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)

Untuk membuat tampilan yang berbeda dan memberikan izin untuk tampilan tersebut, seperti user1 padadb1, lakukan hal berikut.

--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;

Seperti user2 padadb2, jalankan query cross-database berikut menggunakan notasi tiga bagian untuk melihat tampilan tertentu.

--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)

Seperti user2 padadb2, jalankan kueri lintas basis data berikut menggunakan notasi skema eksternal untuk menanyakan tampilan pengikatan akhir.

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

Seperti user2 padadb2, jalankan perintah berikut menggunakan tabel terhubung dalam satu query.

--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)

Contoh berikut mencantumkan semua database pada 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)

Contoh berikut mencantumkan semua skema Amazon Redshift dari semua database di 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)

Contoh berikut mencantumkan semua tabel Amazon Redshift atau tampilan semua database di 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)

Contoh berikut mencantumkan semua Amazon Redshift dan skema eksternal dari semua database di 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)

Contoh berikut mencantumkan semua Amazon Redshift dan tabel eksternal dari semua database di 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)