在vertica中创建20列的表b,就像在impala中一样。 构建一个连接impala和vertica的java程序。在那个程序中,批量读取 SELECT * FROM impala.B 并将该内存用作目标语句的主机变量 INSERT /*+DIRECT */ INTO vertica.B VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) . 创建(或保留)暂存表 stg_A 具有与50列表a相同的结构和主键(理想情况下是一列)。 截断暂存表,然后 INSERT /*+DIRECT */ INTO stg_A SELECT B.*, A.col21,A.col22 .... A.col50 FROM B JOIN A ON stg_A.id=A.id (如果 id 是主键)。这确保20列来自 Impala ,其余的来自目标。 最后,运行优化合并:
1条答案
按热度按时间9nvpjoqh1#
在vertica中创建20列的表b,就像在impala中一样。
构建一个连接impala和vertica的java程序。在那个程序中,批量读取
SELECT * FROM impala.B
并将该内存用作目标语句的主机变量INSERT /*+DIRECT */ INTO vertica.B VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
.创建(或保留)暂存表
stg_A
具有与50列表a相同的结构和主键(理想情况下是一列)。截断暂存表,然后
INSERT /*+DIRECT */ INTO stg_A SELECT B.*, A.col21,A.col22 .... A.col50 FROM B JOIN A ON stg_A.id=A.id
(如果id
是主键)。这确保20列来自 Impala ,其余的来自目标。最后,运行优化合并:
当explain计划有一个用于insert的完整访问路径和一个用于delete的完整访问路径,而没有用于merge的访问路径时,您将看到您的合并是一个优化的合并。