alter table temp_table add primary key (id_scan); --if unique
-- or
create index idx_temp_table_1 on temp_table(id_scan); --if not unique
若要将数据从raw移动到目标表:
with temp_t as (
select id_scan, scandist, ST_MakePoint(pt_1, pt_2, pt_3) as pt from temp_table
INSERT INTO points_postgis (id_scan, scandist, pt)
SELECT temp_t.id_scan, temp_t.scandist, temp_t.pt
FROM temp_t;
这将在一次中从上一个表中选择所有数据并对其进行转换。
您可以使用的第二个选项类似。您可以直接将所有原始数据加载到points_postgis,同时将其分隔为3列。然后使用
alter table points_postgis add column pt geometry;
并进行更新,删除临时列:
update points_postgis set pt = ST_MakePoint(pt_1, pt_2, pt_3);
&
alter table points_postgis drop column pt_1, drop column pt_2, drop column pt_3;