我需要分析并在应用程序中使用大量空间数据。原始数据以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万行)。 那么,还有其他方法可以上传大量的空间数据吗?
任何加速黑客攻击我们欢迎各种技巧。
答案 0 :(得分:1)
Here您可以找到一些常规性能提示。您可能已启用fsync属性,并且强制每个INSERT
命令都被物理写入硬盘,这就是为什么需要这么多时间。
不建议关闭fsync(特别是在生产环境中),因为它允许您在意外操作系统崩溃后安全地恢复数据。据医生说:
因此,建议关闭 fsync如果你可以轻松地重新创建你的 来自外部数据的整个数据库。
答案 1 :(得分:1)
使用COPY
将文本文件插入表格(具有适当的列)如果没有一个
,请在此表中添加一个SERIAL PRIMARY KEYVACUUM
每个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函数上运行。
插入后创建GIST索引。