云数据库AnalyticDB for PostgreSQL(原HybridDB for PostgreSQL)是一种大规模并行处理(MPP)数据仓库服务,兼容PostgreSQL/Oracle数据库生态,支持行存储和列存储模式。数据湖分析DLA(Data Lata Analytics)支持接入AnalyticDB for PostgreSQL服务,通过标准SQL语句读写AnalyticDB for PostgreSQL中的数据。

准备工作

  • 您需要在AnalyticDB for PostgreSQL中进行以下操作:
    1. 创建实例和配置实例,具体操作请参见开始使用
      由于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。
    2. 创建数据库和表,具体操作请参见数据库管理数据表管理。示例如下:
      #创建数据库adp_demo。
      create database adp_demo;  
      #创建数据表products。​
      CREATE TABLE products (
            product_no integer PRIMARY KEY,
            name text,
            price numeric)
      DISTRIBUTED BY (product_no);​
    3. 通过INSERT INTO向数据表中写入测试数据。示例如下:
      ​INSERT INTO products (product_no, name, price) VALUES
       (1, 'Cheese', 9.99),
       (2, 'Bread', 1.99),
       (3, 'Milk', 2.99);​
  • 您需要在DLA中进行以下操作:
    1. 开通DLA服务,具体操作请参见开通云原生数据湖分析服务
    2. 初始化数据库主账号密码,具体操作请参见重置数据库密码
    3. 创建服务访问点,具体操作请参见创建服务访问点

操作步骤

  1. 登录DLA控制台
  2. 在左侧导航栏单击Serverless Presto > SQL访问点
  3. 创建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。
  4. 创建表。
    通过以下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中的数据。

  5. 通过INSERT INTO向AnalyticDB for PostgreSQL中写入数据,例如向products表中写入一条数据。
    insert into dla_adbpg_test_db.products values(4, 'Apple', 10.1);