云数据库AnalyticDB for PostgreSQL(原HybridDB for PostgreSQL)是一种大规模并行处理(MPP)数据仓库服务,兼容PostgreSQL/Oracle数据库生态,支持行存储和列存储模式。数据湖分析DLA(Data Lata Analytics)支持接入AnalyticDB for PostgreSQL服务,通过标准SQL语句读写AnalyticDB for PostgreSQL中的数据。
准备工作
- 您需要在AnalyticDB for PostgreSQL中进行以下操作:
- 创建实例和配置实例,具体操作请参见开始使用。
由于AnalyticDB for PostgreSQL实例位于VPC网络内,默认情况下DLA无法访问该VPC网络中的资源。为使DLA能够访问AnalyticDB for PostgreSQL,需要通过VPC反向访问技术,即在AnalyticDB for PostgreSQL白名单中添加100.104.0.0/16 IP地址段。说明 当您在AnalyticDB for PostgreSQL的白名单中添加了100.104.0.0/16 IP地址段,即视为您同意DLA利用VPC反向访问技术访问AnalyticDB for PostgreSQL。
- 创建数据库和表,具体操作请参见数据库管理和数据表管理。示例如下:
#创建数据库adp_demo。 create database adp_demo;
#创建数据表products。 CREATE TABLE products ( product_no integer PRIMARY KEY, name text, price numeric) DISTRIBUTED BY (product_no);
- 通过INSERT INTO向数据表中写入测试数据。示例如下:
INSERT INTO products (product_no, name, price) VALUES (1, 'Cheese', 9.99), (2, 'Bread', 1.99), (3, 'Milk', 2.99);
- 创建实例和配置实例,具体操作请参见开始使用。
- 您需要在DLA中进行以下操作:
- 开通DLA服务,具体操作请参见开通云原生数据湖分析服务。
- 初始化数据库主账号密码,具体操作请参见重置数据库密码。
- 创建服务访问点,具体操作请参见创建服务访问点。
操作步骤
- 登录DLA控制台。
- 在左侧导航栏单击 。
- 创建Schema。
在SQL访问点页面,定位到AnalyticDB for PostgreSQL实例的VPC网络,单击登录到DMS,在DLA中创建AnalyticDB for PostgreSQL Schema。语法示例如下:
CREATE SCHEMA dla_adbpg_test_db WITH DBPROPERTIES ( CATALOG = 'adbpg', LOCATION = 'jdbc:postgresql://gp-bp13******.gpdb.rds.aliyuncs.com:3432/db-name', USER = 'user-name', PASSWORD = 'password', INSTANCE_ID = 'gp-bp*******', VPC_ID = 'vpc-bp********' );
参数 说明 CATALOG 取值为adbpg,表示创建的是AnalyticDB for PostgreSQL Schema。 LOCATION AnalyticDB for PostgreSQL的连接信息,格式: jdbc:postgresql://AnalyticDB for PostgreSQL的内网连接地址:3432/db-name
。USER AnalyticDB for PostgreSQL中的数据库账号。 PASSWORD USER对应的密码。 VPC_ID AnalyticDB for PostgreSQL的VPC ID。 INSTANCE_ID AnalyticDB forPostgreSQL的实例ID。 - 创建表。
通过以下SQL在dla_adbpg_test_db Schema中创建products表。语法示例如下:
#语法示例1 create external table dla_tablename ( column1 datatype, column2 datatype, column3 datatype ) tblproperties( table_mapping = 'schema_name.adbpg_tablename' );
#语法示例2 create external table dla_tablename like mapping('schema_name.adbpg_tablename');
#语法示例3 msck repair database dla_adbpg_db
如果AnalyticDB for PostgreSQL中的表数据太大或者无法确认AnalyticDB for PostgreSQL的对应数据库中有哪些表时,您可以在DLA中执行以下SQL命令自动识别AnalyticDB for PostgreSQL对应数据库中的表,一键同步AnalyticDB for PostgreSQL中的表结构到DLA Schema中。create external table products ( product_no int, name varchar(1023), price double ) tblproperties( table_mapping = 'public.products' );
说明 由于AnalyticDB for PostgreSQL的一个数据库中有多个Schema,不同Schema中的表名可能有重复,目前msck repair database命令只能识别出public Schema中的表。表创建成功后,您就可以通过SELECT在DLA中读取AnalyticDB for PostgreSQL中的数据。
- 通过INSERT INTO向AnalyticDB for PostgreSQL中写入数据,例如向products表中写入一条数据。
insert into dla_adbpg_test_db.products values(4, 'Apple', 10.1);