Foreign Data Wrapper (FDW) adalah ekstensi PostgreSQL yang memungkinkan Anda mengakses data eksternal. Sumber data eksternal mencakup database dari instance ApsaraDB RDS dan instance RDS lainnya. Di GanosBase, FDW mendukung akses terpadu ke berbagai jenis data spasial serta secara otomatis memetakan tipe data geometri spasial ke tipe Geometry. Dengan FDW, Anda dapat mengakses dan menanyai data dari tabel asing maupun tabel di instance RDS secara terpadu.
Prosedur
Buat ekstensi Ganos_FDW.
Anda dapat menggunakan salah satu metode berikut untuk membuat ekstensi Ganos_FDW:
Gunakan kata kunci CASCADE untuk membuat ekstensi Ganos_FDW.
CREATE EXTENSION ganos_fdw WITH schema public CASCADE;CatatanDisarankan untuk menginstal ekstensi dalam mode publik guna menghindari masalah izin.
Buat langsung ekstensi Ganos_FDW.
CREATE EXTENSION ganos_spatialref; CREATE EXTENSION ganos_geometry; CREATE EXTENSION ganos_fdw;
Daftarkan file data spasial dalam format shapefile sebagai tabel asing.
Daftarkan shapefile sebagai tabel asing.
SELECT ST_RegForeignTables('OSS://<access_id>:<secrect_key>@[<Endpoint>]/<bucket>/path_to/filet');CatatanBerikut ini adalah penjelasan parameter:
ak_id dan ak_secret menentukan ID AccessKey dan Rahasia AccessKey dari pasangan AccessKey yang digunakan untuk mengakses Bucket Object Storage Service (OSS). Untuk informasi lebih lanjut, lihat Memperoleh Pasangan AccessKey.
Untuk memastikan aksesibilitas data, pastikan bahwa instance RDS Anda dan bucket OSS berada di wilayah yang sama serta terhubung melalui Titik akhir OSS internal. Untuk informasi lebih lanjut, lihat Nama domain OSS.
/<bucket>/path_to/filemenentukan direktori file di bucket OSS. Jika Anda menggunakan file dalam format shapefile, file tersebut harus mencakup setidaknya tiga jenis file berikut:.shp, .shx, dan .dbf. File-file tersebut harus diunggah ke folder yang sama di bucket OSS.
Tanyakan tabel asing menggunakan tampilan
information_schema.foreign_tables.SELECT foreign_table_name FROM information_schema.foreign_tables ORDER BY foreign_table_name ASC;
Tanyakan data dari tabel asing.
SELECT fid, ST_AsText(geom), name, age, height FROM poly WHERE fid = 1;Contoh keluaran:
fid | ST_AsText(geom) | name | age | height -------------------------------------------------------------------- 1 | POLYGON((5 0,0 0,0 10,5 10,5 0)) | ZhangShan | 35 | 1,84Impor data dari tabel asing ke dalam tabel yang dibuat di instance RDS Anda.
Jika belum ada tabel yang dibuat di instance RDS Anda, jalankan perintah berikut untuk membuat tabel dan menyisipkan data ke dalamnya:
CREATE TABLE poly_db AS SELECT * FROM poly;Jika tabel telah dibuat di instance RDS Anda, Anda dapat menggunakan salah satu metode berikut untuk mengimpor data:
Gunakan pernyataan INSERT SELECT.
INSERT INTO poly_db SELECT * FROM poly;Gunakan pernyataan IMPORT FOREIGN SCHEMA.
CREATE SCHEMA imp; IMPORT FOREIGN SCHEMA ganos_fdw FROM SERVER ganos_fdw_server INTO imp;
Opsional. Hapus ekstensi Ganos_FDW.
DROP EXTENSION Ganos_FDW CASCADE;