您需要先在DLA中创建AnalyticDB for MySQL Schema和对应的外表,然后才能通过INSERT INTO SELECT将OSS中的数据写入AnalyticDB for MySQL。
创建Schema
-
登录DLA控制台。
-
单击左侧导航栏的访问点管理,然后,登录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 |
字段(列)映射。 |