Create Table Like Mapping: 基于类型推断的建表方法

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: ![create-table-like-mapping.png](https://ata2-img.cn-hangzhou.oss-pub.aliyun-inc.com/1e60369b1873a7a1c3b358a3194cd3db.png) [Data Lake Analytics](https://www.aliyun.com/product/datalakeanalytics) 作为云上

create-table-like-mapping.png
Data Lake Analytics 作为云上数据处理的枢纽,最近加入了一种创新型的、基于类型推断的建表语法,能够帮助用户大大减少建表的工作量,今天带你来体验一下。

Create Table Like Mapping 语法简介

我们通常的建表语句是要求你填写好所有的字段信息的,比如在DLA里面建一个底层映射到 MongoDB 的表的语法是这样的:

create external table person (
    id int,
    title varchar(127),
    age int,
    create_time timestamp
);

这里字段比较少可能还不觉得什么,实际业务里面表的字段往往都是几十上百个字段,让用户手动敲这么多字段定义是非常耗时的。而有了Create Table Like Mapping的语法,这个工作量可以大大减少, 它的语法如下:

create external table dla_table like mapping('underlying_data_source_table');

注意这里的最后的 mapping('underlying_data_source_table') , 这里表示的是我们要推断的表是来源于底层 MongoDB/MySQL 等等的,而不是一个DLA的表。下面我们以 MongoDB 为例来实际使用一下这个功能。

Create Table Like Mapping + MongoDB

首先我们在DLA里面创建一个映射到 MongoDB 的库:

CREATE DATABASE `mongo_test`
WITH DBPROPERTIES (
    catalog = 'mongodb',
    location = 'mongodb://<your-user-name>:<your-password>@dds-bp1694axxxxxxxx.mongodb.rds.aliyuncs.com:3717,dds-bp1694ayyyyyyyy.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=zzzzz',
    database = 'mongo_test',
    vpc_id = 'vpc-aaaaaaa'
);

关于如何在DLA里面使用MongoDB的详情可以参见: 使用Data Lake Analytics读/写MongoDB数据

假设我们的 MongoDB 数据库里面有一个名字叫 person 的 collection, 它里面的数据长这样:

{
  "_id": "ObjectId("5c134c3f36d9cf6ad7077043")"
  "id": 1
  "name": "james"
  "age": 10
  "create_time": "ISODate("2018-12-14T06:22:54.369Z")"
}

那么我们现在要建一个DLA映射表用下面的语句:

create external table person like mapping('person');

在这条语句的背后,我们DLA的引擎会自动去MongoDB里面捞一条样例数据,然后对样例数据里面的字段、字段的类型进行分析,然后自动产生对应的建表语句,创建相应的表:

mysql> create external table person like mapping('person');
Query OK, 0 rows affected (1.01 sec)

mysql> desc person;
+-------------+-----------+-----------------+
| Field       | Type      | Collation       |
+-------------+-----------+-----------------+
| age         | double    | utf8_general_ci |
| create_time | timestamp | utf8_general_ci |
| id          | double    | utf8_general_ci |
| name        | varchar   | utf8_general_ci |
+-------------+-----------+-----------------+
4 rows in set (0.02 sec)

这里为了简洁美观,省略了部分字段。

然后我们就可以通过DLA的 person 表对底层MongoDB里面的数据进行查询了:

mysql> select * from person limit 4;
+------+-------------------------+------+-------+
| age  | create_time             | id   | name  |
+------+-------------------------+------+-------+
| 10.0 | 2018-12-14 14:22:54.369 |  1.0 | james |
| 20.0 | 2018-12-14 14:23:48.527 |  2.0 | bond  |
| 30.0 | 2018-12-14 14:23:48.962 |  3.0 | lily  |
| 20.0 | 2018-12-14 14:23:49.396 |  4.0 | lucy  |
+------+-------------------------+------+-------+
15 rows in set (2.17 sec)

这里我们展示了使用 create table like mapping 进行MongoDB的表的创建,DLA对于其它的存储比如MySQL, SQLServer, Postgres也都支持这个功能。

Create Table Like DLA table

上面我们介绍的都是创建跟底层存储结构一样的表结构,传统数据库其实还支持把一个表的结构复制一份,然后起一个新名字的create table like 语法,我们其实也是支持的,它的语法如下:

create external dla_table_2 like dla_table_1;

还是以前面我们刚刚建好的DLA的表person为例:

mysql> create external table person_2 like person;
Query OK, 0 rows affected (0.20 sec)

mysql> select * from person_2 limit 1;
+------+-------------------------+------+-------+
| age  | create_time             | id   | name  |
+------+-------------------------+------+-------+
| 10.0 | 2018-12-14 14:22:54.369 |  1.0 | james |
+------+-------------------------+------+-------+
1 row in set (0.72 sec)

总结

基于类型推断的建表Create Table Like Mapping语法可以帮助用户大大简化表创建的工作量,目前支持的数据源有: MySQL, SQLServer, Postgres, MongoDB, PolarDB等等,后面我们会拓展到所有的数据源。

Happy DLAing!

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
5月前
|
SQL Oracle 关系型数据库
CREATE TABLE 时的 SQL FOREIGN KEY 约束
【7月更文挑战第24天】CREATE TABLE 时的 SQL FOREIGN KEY 约束。
56 5
|
5月前
|
SQL Oracle 关系型数据库
CREATE TABLE 时的 SQL PRIMARY KEY 约束
【7月更文挑战第24天】CREATE TABLE 时的 SQL PRIMARY KEY 约束。
44 2
|
5月前
|
SQL Oracle 关系型数据库
ALTER TABLE 时的 SQL PRIMARY KEY 约束
【7月更文挑战第24天】ALTER TABLE 时的 SQL PRIMARY KEY 约束。
44 3
|
5月前
|
SQL Oracle 关系型数据库
SQL UNIQUE 约束
【7月更文挑战第19天】SQL UNIQUE 约束。
45 4
|
5月前
|
SQL 关系型数据库 MySQL
ALTER TABLE 时的 SQL DEFAULT 约束
【7月更文挑战第20天】ALTER TABLE 时的 SQL DEFAULT 约束。
46 1
|
5月前
|
SQL Oracle 关系型数据库
ALTER TABLE 时的 SQL UNIQUE 约束
【7月更文挑战第16天】ALTER TABLE 时的 SQL UNIQUE 约束。
31 1
|
7月前
|
存储 SQL 关系型数据库
CREATE TABLE语句
在MySQL中,使用CREATE TABLE语句来创建表。你需要指定表名和列的定义,包括列名、数据类型以及约束等,结合实际存储和上一课学习的数据类型选取合适的。创建一个book_types表
220 0
|
SQL 存储 关系型数据库
PostgreSQL 动态表复制(CREATE TABLE AS & CREATE TABLE LIKE)
PostgreSQL 动态表复制(CREATE TABLE AS & CREATE TABLE LIKE)
777 0
|
SQL 数据库
CREATE TABLE 语句
CREATE TABLE 语句
131 1
|
自然语言处理 安全 数据库
Miniob drop table 实现解析 | 学习笔记
快速学习 Miniob drop table 实现解析
Miniob drop table 实现解析 | 学习笔记

相关实验场景

更多