我在postgresql中创建了一个下表:
create table retail_fact( id serial not null, name text);
我在hive和MySQL中有客户表,我想使用Pentaho pdi(通过presto连接)将数据从它们加载到PostgreSQL retail_fact
表 .
另外,当我使用来自Hive和MySQL的数据加载表时,O希望id在Postgres中自动递增(更简单的说法 . 我需要一个sql查询来做同样的事情) .
查询如下所示:
insert into postgresql.rpt.order_fact(
select name from hive.retail.customer_hive
UNION
select name from mysql.retail.customer_mysql
);
当我将名称列的上述数据插入postgres中的order_fact时,如何使id列自动递增?
1 回答
你的表构造看起来不像PostgreSQL ......可能是MS SQL Server或Sybase,但是除此之外 . 如果您使用的是PostgreSQL且版本为9.x,则序列会在幕后实现序列/默认值 . 我认为在10.x上它是不同的,但在9.x上,你可以简单地劫持你的插入序列:
我假设CTE是必要的,否则唯一的序列值会将
union
变成union all
.或者,更好(更便携),在插入中明确指定字段: