16.3. Lesson: 导入和导出

当然,一个没有简单方法将数据迁入和迁出的数据库不会有多大用处。幸运的是,有许多工具可以让您轻松地将数据移入和移出PostGIS。

16.3.1. Shp2pgsql

Shp2pgsql是一个命令行工具,用于将ESRI shapefile导入数据库。在Unix下,您可以使用以下命令导入新的PostGIS表:

shp2pgsql -s <SRID> -c -D -I <path to shapefile> <schema>.<table> | \
  psql -d <databasename> -h <hostname> -U <username>

在Windows下,您必须分两步执行导入过程:

shp2pgsql -s <SRID> -c -D -I <path to shapefile> <schema>.<table> > import.sql
psql psql -d <databasename> -h <hostname> -U <username> -f import.sql

您可能会遇到此错误:

ERROR:  operator class "gist_geometry_ops" does not exist for access method
"gist"

这是一个关于创世的已知问题 in situ 您要导入的数据的空间索引。若要避免该错误,请排除 -I 参数。这意味着不会直接创建空间索引,您需要在导入数据后在数据库中创建它。(空间索引的创建将在下一课中介绍。)

16.3.2. Pgsql2shp

Pgsql2shp是一个命令行工具,用于导出PostGIS表、视图或SQL SELECT查询。要在Unix下执行此操作,请执行以下操作:

pgsql2shp -f <path to new shapefile> -g <geometry column name> \
  -h <hostname> -U <username> <databasename> <table | view>

要使用查询导出数据,请执行以下操作:

pgsql2shp -f <path to new shapefile> -g <geometry column name> \
  -h <hostname> -U <username> "<query>"

16.3.3. Or2ogr

Ogr2ogr是一个非常强大的工具,可以将数据转换为Postgis或从Postgis转换为多种数据格式。Ogr2ogr是GDAL库的一部分,必须单独安装。要将表从PostGIS导出到GML,可以使用以下命令:

ogr2ogr -f GML export.gml PG:'dbname=<databasename> user=<username>
        host=<hostname>' <Name of PostGIS-Table>

16.3.4. 数据库管理器

您可能已经注意到 Database 带标签的菜单 DB Manager 。这是一个提供与空间数据库(包括PostGIS)交互的统一界面的工具。它还允许您从数据库导入和导出到其他格式。由于下一个模块主要致力于使用此工具,因此我们在此仅简要介绍它。

16.3.5. In Conclusion

向数据库导入数据和从数据库导出数据可以通过许多不同的方式完成。尤其是在使用完全不同的数据源时,您可能会定期使用这些函数(或其他类似的函数)。

16.3.6. What's Next?

接下来,我们将了解如何查询我们以前创建的数据。