您需要先在DLA中创建AnalyticDB for MySQL Schema和对应的外表,然后才能通过INSERT INTO SELECT将OSS中的数据写入AnalyticDB for MySQL。

创建Schema

  1. 登录DLA控制台

  2. 单击左侧导航栏的访问点管理,然后,登录DMS,在DLA中创建AnalyticDB for MySQL Schema。

    CREATE SCHEMA ads_database_schema WITH DBPROPERTIES 
    ( 
    CATALOG = 'adb3', 
    LOCATION = 'jdbc:mysql://am-bp1m76i0ivxpc60v313****.ads.aliyuncs.com:3306/adb_demo',
    VPC_ID='your-adb-vpc_id',
    INSTANCE_ID='your-adb-instance_id',
    USER='account1',
    PASSWORD='Account1'
    );
    参数 说明
    CATALOG = 'adb3' 指定创建的是AnalyticDB for MySQL 3.0 Schema。
    LOCATION AnalyticDB for MySQL的连接信息。
    VPC_ID AnalyticDB for MySQL的VPC ID。
    INSTANCE_ID AnalyticDB for MySQL的集群ID。
    USER AnalyticDB for MySQL中的数据库账号。
    PASSWORD USER对应的密码。

创建表

在DLA中创建AnalyticDB for MySQL,分为两种情况:

  • 表名、字段名或者字段类型与AnalyticDB for MySQL中的表信息不一致。

  • 表名、字段名或者字段类型与AnalyticDB for MySQL的表信息完全一致。

表名和字段信息一致(建议一致)

以下示例在DLA中创建shipping表。

CREATE EXTERNAL TABLE shipping (
  id bigint NOT NULL COMMENT '',
  origin_state varchar NOT NULL COMMENT '',
  origin_zip varchar NOT NULL COMMENT '',
  destination_state varchar NOT NULL COMMENT '',
  destination_zip varchar NOT NULL COMMENT '',
  package_weight int NOT NULL COMMENT '',
  PRIMARY KEY (id)
)

表名或字段信息不一致

以下示例在DLA中创建与order_table对应的表order_table1。其中,order_table1中部分字段名与order_table不同,order1_id的数据类型与order_id不同。

CREATE EXTERNAL TABLE order_table1 (
  customer1_id bigint NOT NULL COMMENT '',
  order1_id bigint NOT NULL COMMENT '',
  order1_time date NOT NULL COMMENT '',
  order1_amount double NOT NULL COMMENT '',
  order1_type varchar NOT NULL COMMENT '',
  address1 varchar NOT NULL COMMENT '',
  city1 varchar NOT NULL COMMENT '',
  order1_season bigint COMMENT '',
  PRIMARY KEY (customer1_id)
)
tblproperties (
   table_mapping = 'adb_demo.order_table', 
   column_mapping = 'customer1_id,customer_id; order1_id,order_id; order1_time:order_time, 
   order1_amount:order_amount, order1_type:order_type, address1:address, 
   city1:city,order1_season:order_season'
);
参数 说明
tblproperties DLA中的表与源表的映射关系。
table_mapping 表名映射。
column_mapping 字段(列)映射。