今天聊聊怎么给表写入数据

上期给大家将了,如何在交互式分析中高效建表,并构建表索引以及给表设置属性,以期在同等资源情况下,能更快的查询到表数据。往期精彩传送门:今天来聊聊怎么高效建表。今天小编就来为大家讲讲如何把数据写入进表里。

当前版本的交互式分析支持的数据写入来源有:MaxCompute、实时计算(Flink)以及交互式分析这3种,当前交互式分析支持insert into select 和insert into vaues两种标准的PG表达方式,可以写入部分字段,也可以写入全部字段,下面就以分区表和非分区表两种场景来将,如何将数据写入表中。

场景1:将数据写进非分区表中

1.建一张非分区表

CREATE TABLE holo_test (
id int8 NOT NULL,
age int8,
name text,
born timestamptz,
class text,
tel text,
PRIMARY KEY (id)
);
CALL SET_TABLE_PROPERTY('holo_test', 'orientation', 'column');

2.两种方式导入数据

//方式1:
INSERT INTO holo_test VALUES
(1,    25,    'Tom',    '1993-07-02', 'mid', '0253-889902'),
(2, 22, 'Dad', '1994-09-12', 'hig', '0222-555222'),
(3, 24, 'www', '1995-09-15', 'mid', '0232-5445292'),
(4, 23, 'Lily', '1996-02-17', 'hig', '0234-8745209');
//方式2:
INSERT INTO holo_test
SELECT  5, 23, 'neal', '1994-05-13', 'hig', '0154-8778209';

若是直接从MaxCompute 中导入数据,还可以使用以下语句

insert into table1
select * from table2; //全部字段导入
insert into table1
select
id,
name
from table2;//导入部分字段数据

说明:两种insert的方式,在性能上,若是大量数据,insert into values可能写入的比较麻烦,insert into select可以直接将数据从另一个表中写入,较简单,性能表现也会更快。

场景2:将数据写入分区表中

当一张表数据很大时,通常会用到分区,在交互式分析中也支持分区表,关于分区表的创建可以参考文档:管理和创建分区表。
1.新建一张分区表

CREATE TABLE par_holo (
id int8,
name text,
ds text
)
PARTITION BY LIST (ds);
CALL SET_TABLE_PROPERTY('par_holo', 'orientation', 'column');

2.新建一张分区子表

CREATE TABLE par_holo_1 PARTITION of par_holo
FOR VALUES in ('ds');

3.将数据写入进分区子表

//方式1
INSERT INTO par_holo_1 VALUES (1,'a','ds');
INSERT INTO par_holo_1
SELECT  2,'b','ds';

关于MaxCompute数据导入至交互式分析中可以参见文档:MaxCompute导入查询。
或者往期精彩:来了,2行代码秒级查询MaxCompute!
但看完本文的朋友们可能会又疑问,要是导本地文件,或者这么负责的写法,数据量大的时候怎么办,偷偷告诉大家,别担心,下期给大家讲解如何使用copy。
关于在使用交互式分析中有任何问题,请进钉钉群交流
今天聊聊怎么给表写入数据