我在posgresql 9.6中运行了以下命令:
./bin/createdb testSpatial
./bin/psql -d testSpatial -c "CREATE EXTENSION postgis;"
create table test(name character varying(250), lat_long character varying(90250), the_geo geography);
\copy test(name,lat_long) FROM 'test.csv' DELIMITERS E'\t' CSV HEADER;
CREATE INDEX spatial_gist_index ON test USING gist (the_geo );
UPDATE test SET the_geo = ST_GeogFromText('SRID=4326;'||lat_long);
但是,似乎对于包含一百万行的表,update命令似乎永远在运行。已经14个小时,但更新命令仍然在包含64 GB RAM的服务器上运行?
答案 0 :(得分:1)
检查你的UPDATE
命令,实际上你正在更新所有记录,因此如果你说了一百万行,那么所有这些记录都会得到处理。您可能希望使用WHERE
条件使其更快(在这种情况下它也将使用索引,如果在该过滤器列上),如下所示,除非您真的想要更新整个表记录。
UPDATE test
SET the_geo = ST_GeogFromText('SRID=4326;'||lat_long)
WHERE id = <value>;