Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 在Postgis中上传大量空间数据的好方法是什么?_Postgresql_Spatial_Postgis_Spatial Index - Fatal编程技术网

Postgresql 在Postgis中上传大量空间数据的好方法是什么?

Postgresql 在Postgis中上传大量空间数据的好方法是什么?,postgresql,spatial,postgis,spatial-index,Postgresql,Spatial,Postgis,Spatial Index,我有大量的空间数据需要分析并在应用程序中使用。原始数据以WKT格式表示,我将其包装到INSERT SQL语句中以上载数据 INSERT INTO sp_table ( ID_Info, "shape") VALUES ('California', , ST_GeomFromText('POLYGON((49153 4168, 49154 4168, 49155 4168, 49155 4167, 49153 4168))')); 但是,这种方法花费的时间太长,数据太大(1000万行)。 那么,

我有大量的空间数据需要分析并在应用程序中使用。原始数据以WKT格式表示,我将其包装到INSERT SQL语句中以上载数据

INSERT INTO sp_table ( ID_Info, "shape") VALUES ('California', , ST_GeomFromText('POLYGON((49153 4168, 49154 4168, 49155 4168, 49155 4167, 49153 4168))'));
但是,这种方法花费的时间太长,数据太大(1000万行)。 那么,有没有其他方法可以上传大量的空间数据呢

欢迎使用任何加速技巧

您可以找到一些一般的性能提示。可能您已经启用了属性,并且每个
INSERT
命令都被强制物理写入硬盘,这就是为什么要花费这么多时间的原因

不建议关闭fsync(特别是在生产环境中),因为它允许您在意外操作系统崩溃后安全地恢复数据。根据文件:

因此,只建议关闭 fsync,如果您可以轻松地重新创建 从外部数据获取整个数据库


使用“复制”将文本文件插入表(具有适当的列)

如果此表没有串行主键,请将其添加到该表中

真空

每个CPU生成一个进程,该进程执行以下操作:

INSERT INTO sp_table ( ID_Info, "shape")
SELECT state_name, ST_GeomFromText( geom_as_text )
FROM temp_table
WHERE id % numbre_of_cpus = x
对每个进程使用不同的“x”值,以便处理整个表。这将允许每个内核在慢速ST_GeomFromText函数上运行


插入后创建要点索引。

复制速度更快,所有提示都很好。禁用fsync可能导致损坏。