Red de conocimiento informático - Material del sitio web - Cómo importar datos de bases de datos PostgreSQL

Cómo importar datos de bases de datos PostgreSQL

Hablando de bases de datos, todos estamos familiarizados con productos de bases de datos comerciales como Oracle, Microsoft SqlServer y DB2 de IBM, así como con las dos principales bases de datos de código abierto, MySQL y PostgreSQL.

PostgreSQL es un sistema de gestión de bases de datos relacionales de objetos (ORDBMS para abreviar). Actualmente es el sistema de base de datos de software gratuito más potente, rico en funciones y complejo.

PostgreSQL es un sistema de gestión de bases de datos relacionales de objetos (ORDBMS) y actualmente es el sistema de bases de datos de software libre más potente y complejo. Se originó a partir del programa de investigación de bases de datos de Berkeley (BSD).

Actualmente es uno de los proyectos de desarrollo de productos de bases de datos de código abierto más importantes y cuenta con una gama muy amplia de usuarios.

Se puede decir que PostgreSQL es el sistema de gestión de bases de datos gratuito más distintivo. Algunas personas piensan que puede convertirse en el sistema de gestión de bases de datos de software libre más potente.

PostgreSQL es el único sistema de gestión de bases de datos de software gratuito que admite transacciones, subconsultas, sistemas de control paralelo de múltiples versiones y comprobaciones de integridad de datos

comprobación.

PostgreSQL es el único sistema de gestión de bases de datos de software gratuito que admite transacciones y otras funciones. Puede ejecutarse en múltiples plataformas (incluidas Linux,

FreeBSD y Windows) y admite el desarrollo en varios idiomas. .

En la comparación de los dos principales productos de bases de datos de código abierto, generalmente se considera que MySQL es más rápido y, por lo tanto, más utilizado.

Si bien PostgreSQL tiene un rendimiento más avanzado, PostgreSQL proporciona muchos beneficios de MySQL. Funciones como

activadores, vistas, procedimientos almacenados, etc. no son compatibles actualmente y funcionan particularmente bien cuando el número de registros supera los 10 millones.

PostgreSQL proporciona muchas funciones que MySQL no admite actualmente, como activadores, vistas, procedimientos almacenados, etc., y funciona particularmente bien cuando el número de registros supera los 10 millones.

La versión actual es PostgreSQL 8.2.3, y su sitio web oficial es:

www.postgresql.org

1.2 ¿Qué es PostGIS?

PostGIS agrega la función de almacenar y administrar datos espaciales basados ​​en la base de datos relacional de objetos PostgreSQL. PostGIS agrega la función de almacenar y administrar datos espaciales basándose en la base de datos relacional de objetos PostgreSQL, que es equivalente a la parte espacial de Oracle.

La característica más importante de PostGIS es que cumple e implementa algunas de las especificaciones de OpenGIS y es la base de datos SIG de código abierto más famosa.

La última versión es PostGIS 1.2.1, y su web oficial es:

www.postgis.org

Instalación de dos PostgreSQL y PostGIS

p>

2.1 Instalación bajo Windows.

La nueva versión de PostgreSQL integra PostGIS en el programa de instalación. Sólo necesita verificar los elementos

PostGIS y pgsql durante la instalación.

2.2 Instalar PostGIS en Debian

# apt-get install postgresql-8.1 postgresql-8.1-postgis

La versión actual de Etch.PostgreSQL es 8.1.0 : PostgreSQL es 8.1.7 y PostGIS es 1.1.6 Aunque no es la última versión,

es suficiente.

Qué más hay que hacer:

1) Crear una base de datos dedicada PostGIS e importar soporte PostGIS para la base de datos dedicada:

# su - postgres

$ cd /usr/share/postgresql-8.1- postgis

$ creadob wen1

$ createelang plpgsql wen1

$ psql -d wen1 -f lwpostgis .sql

$ psql -d wen1 -f espacial_ref_sys.sql

2) Cree un usuario dedicado y establezca las propiedades de la base de datos y la tabla de datos correspondientes para este usuario:

# su - postgres

$ psql

$ crear usuario wen1 contraseña ' 123456';

$ alterar la base de datos wen1 propietario a wen1 ;

p>

$ alterar el propietario de la tabla espacial_ref_sys a wen1;

$ alterar el propietario de las columnas de geometría_de la tabla a wen1

3) Modifique el archivo de configuración de PostgreSQL para que se puede utilizar de forma remota.

Modifique el archivo de configuración de PostgreSQL /etc/postgresql/8.1/main/Postgresql.conf y agregue la siguiente oración:

listen_address='localhost'

Eliminar el comentario anterior y cambie 'localhost' a '*'.

Modifique el archivo de configuración de Postgresql /etc/postgresql/8.1/main/pg_hba.conf y agregue una oración al final del archivo:

host all all 192.168.0.0/24 contraseña

Esta oración significa: 192.168.0.* las máquinas en la misma red pueden usar todas las bases de datos a través de contraseñas. Para conocer significados más

específicos de este parámetro, consulte los comentarios en el archivo de configuración.

Asegúrate de configurarlo correctamente aquí, de lo contrario no podrás conectarte a la base de datos PostgreSQL de forma remota.

2.3 Instalación del código fuente de PostgreSQL y PostGIS

Consulte un artículo que escribí antes.

3. Uso de PostGIS

Para usar PostGIS, necesita dos aspectos de conocimiento preparatorio, uno es estar familiarizado con la sintaxis SQL básica y el otro es estar familiarizado con

Uso básico de la base de datos PostgreSQL.

(1) Inicio rápido

Usamos la base de datos wen2 creada anteriormente y el usuario es wen1. Ahora crea una base de datos que contiene tres puntos

prueba1:

p>

Primero, inicie sesión como wen1 en Etch y luego abra la base de datos wen2:

$ psql -d wen2;

Luego ingrese el siguiente comando en la consola PostgreSQL :

wen2=gt; crear tabla test1 (myID int4, pt geometría, myName

varchar

wen2=gt; (1, 'PUNTO(0 0)', 'beijing'

);

wen2=gt; insertar en prueba1 valores (2, 'PUNTO(31.5 60.87)' ,

'shanghai' );

wen2=gt; insertar en test1 valores (3, 'POINT(10.77 85.902)',

'tianjin ' );

De esta manera, utilizamos PostGIS para crear una tabla de datos SIG que contiene tres puntos.

Para abrir esta capa en QGIS, también necesitamos crear una clave primaria para la tabla de datos:

wen2=gt; alterar tabla test1 agregar clave primaria (myID);

Como puedes ver, usar PostGIS es en realidad equivalente a usar un SQL extendido.

Puedes probar estas sentencias SQL nuevamente:

selecciona * de prueba1;

selecciona myID, AsText(pt) de prueba1;

seleccione Distancia(pt, 'PUNTO(0 0)') desde prueba1.

(2) Tipo de datos geométricos de PostGIS

Se puede decir que la geometría es uno de los conceptos más importantes de PostGIS, que significa "geometría", ya que PostGIS sigue muy bien OGC <. /p>

"Función simple para la especificación de PostGIS", podemos usarla para ilustrar.

"Función simple para la especificación para

SQL "La especificación actualmente admite el paquete de tipos de geometría

, incluida su instancia:

POINT (1 1)

MULTIPUNTO(1, 3 4, -1 3) 1, 3 4, -1 3)

LINESTRING(1 1, 2 2, 3 4)

POLÍGONO((0 0, 0 1, 1 1, 1 1, 1 0, 0 0))

MULTIPOLÍGONO((0 0, 0 1, 1 1, 1 1, 1 0 , 0 0), (5 5, 5 6, 6 6, 6 6, 5 5

5))

MULTILINESTRING((1 1, 2 2, 3 4), (2 2, 3 3, 4 5))

Hay dos formas de representación específicas de figuras geométricas, una se llama forma WKT (texto conocido), como la anterior.

Ejemplo. O utilice la siguiente instrucción SQL para navegar:

seleccione AsText(pt) de prueba1;

Otro formulario se llama "Formulario canónico", que parece una cadena de números impares, pero en realidad es una mejora del hexadecimal

Otra forma se llama "Forma canónica", que parece una serie de números extraños, pero en realidad es una mejora del hexadecimal

Codificación, Puede utilizar la siguiente instrucción SQL para navegar:

seleccione pt de prueba1;

(C) Leer y escribir datos PostGIS

En Después de crear la base de datos PostGIS, Necesitamos leer y escribir datos SIG, lo que incluye escribir SIG en la base de datos PostGIS y usar PostGIS en aplicaciones. Esto incluye escribir SIG en

bases de datos PostGIS y usar datos PostGIS en aplicaciones. Hay cuatro formas principales de leer y escribir PostGIS:

3.1 Usar el lenguaje psql

El lenguaje Psql es una herramienta de línea de comandos integrada en PostgreSQL y su sintaxis es básicamente la misma que la del SQL estándar. sintaxis. Puede utilizar la herramienta Psql, que combina la sintaxis SQL estándar con algunas extensiones de PostGIS, para leer y escribir en bases de datos PostGIS

.

En el ejemplo de "Inicio rápido" anterior se muestran ejemplos concretos.

Este es un método poderoso, pero la operación manual es tediosa y engorrosa.

3.2 Utiliza algunos gadgets

Hay dos gadgets útiles: shp2pg y ogr2ogr

3.2.1 shp2pgsql y pgsql2shp

shp2pgsql y pgsql2shp son un par de herramientas de conversión realizadas por el propio PostGIS. shp2pgsql y pgsql2shp son un par de herramientas incluidas en PostGIS para convertir entre archivos de formas y bases de datos PostGIS

Después de instalar PostGIS en Debian, estos dos programas ya se encuentran en la ruta de búsqueda del archivo ejecutable

, por lo que se puede utilizar en cualquier parte del sistema.

Si hay un archivo china.shp completo en el directorio actual (debe haber tres archivos con el mismo nombre y diferentes extensiones) y necesita ingresar los datos

en lo anterior wen2 En la tabla china_postgis en la base de datos, puede seguir los pasos a continuación (usando el usuario

wen1):

$$ shp2pgsql china china_postgis gt; >

$ psql -d wen2 -f road.sql

Esta herramienta es muy útil. La desventaja es que su alcance de uso es limitado y solo se puede utilizar en formato de archivo Shape.

3.2.2 ogr2ogr

La propia herramienta shp2pg de PostGIS solo puede convertir archivos de formas a la base de datos PostGIS, entonces, ¿cómo agregar otros

datos GIS? Por ejemplo, ¿el formato medio de MapInfo, el formato e00 de ESRI? Esto requiere la utilidad ogr

.

Ogr es actualmente un componente de gdal, entonces, ¿qué es gdal?

En pocas palabras, Gdal es una biblioteca de software de conversión para varios formatos de datos SIG y ogr es una biblioteca para convertir datos SIG vectoriales.

Actualmente, los formatos de datos admitidos por ogr incluyen:

Cobertura binaria Arc/Info, DWG, ESRI Personal

GeoDatabase, ArcSDE, ESRI

Shapefile, GML, GRASS, Mapinfo File, Microstation DGN, ODBC, Oracle

Spatial y

PostgreSQL. Cabe decir que esto incluye básicamente todos los formatos de archivos SIG basados ​​en vectores que utilizamos habitualmente.

Para conocer los formatos de datos ráster admitidos por Gdal, consulte Finder. Encontré una herramienta llamada e002pg arriba que admite la importación de archivos

e00 a una base de datos postGIS.

3.3 Leer y escribir datos PostGIS en otro software SIG

Por ejemplo, en QGIS, puede abrir capas PostGIS y también hay un complemento SPIT que puede importar archivos Shape. en >

En la base de datos PostGIS.

Otro software SIG como uDig, Grass e incluso ArcInfo también admiten total o parcialmente la lectura y escritura de datos PostGIS.

3.4 Usar interfaces para leer y escribir datos PostGIS en aplicaciones

Un gran número de programadores SIG de código abierto han diseñado interfaces para leer y escribir PostGIS para casi todos los lenguajes de programación, por ejemplo, usando PostgreSQL Con la biblioteca JDBC, puede usar el lenguaje Java para leer y escribir datos PostGIS en el programa

.

Puedes utilizar lenguaje C y utilizar la biblioteca libpq para leer y escribir datos PostGIS.

(4) Uso de funciones de PostGIS

4.1 Funciones de PostGIS

Para dominar el uso de PostGIS, la clave es dominar todas las funciones de PostGIS. Al dominar estas funciones de PostGIS,

podemos procesar diversos datos geográficos de manera eficiente y estable. Dado que el diseño de las funciones PostGIS se ajusta a la especificación OpenGIS,

También podemos llamar a estas funciones PostGIS funciones OpenGIS.

4.2 Clasificación de las funciones PostGIS

Las funciones PostGIS se pueden dividir aproximadamente en las siguientes cuatro categorías

1) Funciones de procesamiento de campo

Esta tipo de función Actualmente es ****, hay tres en total, son:

AddGeometryColumn(var1, var2, var3. var4, var5, var6): Agrega una geometría a la tabla de datos existente

Campos de datos. var1 representa el nombre del esquema (esquema) de la tabla de datos, generalmente el esquema público, que también se puede omitir. En el caso anterior, se utiliza el esquema predeterminado; var2 es el nombre de la tabla de datos existente; data El nombre del campo; var4 es el valor SRID, si no está seguro, tome -1; var5 es el tipo de datos geométricos, que puede ser PUNTO, etc., var6 es si se debe agregar un campo de datos geométricos;

. var6 es

quiénes son los datos bidimensionales o tridimensionales.

La declaración SQL anterior para crear la tabla test1 (miID int4, pt geometría, miNombre

varchar) está escrita en un método

más estandarizado:

cree la tabla test1 (myID int4, myName varchar);

seleccione AddGeometryColumn('test1','pt',-1,'GEOMETRY',2);

La función DropGeometryColumn obviamente elimina el campo de datos geográficos;

La función SetSRID obviamente establece el valor SRID.

2) Funciones de relación geométrica

Actualmente hay 10 funciones*** en esta categoría, a saber,

Distancia es igual a disjunta Intersección Toca Cruce dentro

Las superposiciones contienen relación

Las superposiciones contienen relación

Las superposiciones contienen relación

Las superposiciones contienen relación

3) Función de análisis geométrico

p> p>

Actualmente hay 12 funciones en esta categoría, que son

Área centroide Longitud PuntoEnLímite de superficie

Búfer

ConvexHull Intersección SymDifference Diferencia GeomUnion

MemGeomUnion

4) Funciones de lectura y escritura

Existen muchas funciones de este tipo, que se utilizan principalmente para la conversión entre varios tipos de datos, especialmente tipos de datos geométricos.

Conversión entre Tipo y otros tipos de datos (como tipos de caracteres). Al convertir entre tipos de datos, el papel de las funciones AsText, GeomFromText, etc. es obvio.

4.3 Ejemplos de uso de funciones PostGIS.

Supongamos que hay dos tablas en nuestra base de datos wen2. Una es guojia, que es una tabla de datos de límites nacionales descargada del sitio web "Datos geográficos básicos nacionales"

. LINE; el segundo es shengqu_polygon, que también se descarga del mismo sitio web.

El tipo de datos geográficos es polígono.

1) Consulta la longitud de la línea fronteriza de China:

wen1=gt; select sum(length(the_geom)) as lenth from guojie; Consultar el nombre de la provincia más grande de China:

wen1=gt; seleccione el nombre del área(the_geom) como myarea

de shengqu_polygon

ordenar por myarea DESC

LÍMITE 1;

(5) Uso de funciones extendidas de PostGIS

Además de las funciones OpenGIS anteriores, PostGIS también extiende algunas funciones más allá de las especificaciones actuales de OpenGIS

, incluidas las siguientes categorías:

5.1 Funciones de administración

Las funciones de administración extendidas incluyen algunas funciones de consulta de versión de software, como

postgis_version() , función postgis_geos_version (), postgis_proj_version(), etc. Estas funciones consultan respectivamente la versión actual de PostGIS y las versiones de las bibliotecas Geos y Proj utilizadas.

5.2 Funciones de entrada/salida de tipos de datos

Además de los tipos de datos geográficos definidos por OpenGIS, PostGIS también amplía los tipos de datos de esta extensión

Allí. Hay dos aspectos principales: uno es extender los datos bidimensionales a tres y cuatro dimensiones; el otro es extender los tipos de datos WKT y WKB basados ​​​​en los tipos de datos EWKT y EWKB

.

PostGIS proporciona funciones para convertir entre estos tipos de datos geográficos y tipos de datos comunes, como datos de caracteres y de punto flotante.

5.3 Funciones de medición

Funciones como length3d amplían la función length2d.

5.4 Funciones de operación de geometría

Por ejemplo, la función addBBox(geometry) se utiliza para agregar un borde a una geometría determinada.

Por ejemplo, la función simplificar (geometría, tolerancia) puede utilizar el algoritmo de Douglas-Peuker para eliminar polígonos plegados y algunos nodos de polígonos, haciendo así que el rendimiento del gráfico sea más conciso y claro, y con mayor eficiencia al transmitir datos a través de la red.

5.5 Símbolos de operación

5.6 Otras funciones extendidas

(6) Crear índice PostGIS

Cuando hay más y más registros en el base de datos, si no se crea ningún índice, la eficiencia de la operación se reducirá considerablemente.

PostGIS recomienda crear un índice cuando el número de registros supera varios miles, y las bases de datos SIG generalmente contienen cantidades masivas de datos,

Por lo tanto, los índices son muy importantes para PostGIS.

El archivo Shapfile es el formato de almacenamiento de archivos de ESRI y cuenta con un amplio soporte en la industria. El formato Shapfile es un formato simple que se utiliza para almacenar posiciones geométricas y geografía relevantes en forma de relaciones no topológicas.

Información del atributo de la característica. Aunque GeoServer utiliza archivos Shapfile para crear rápidamente servicios de mapas en línea, también tiene desventajas obvias:

1. Los Shapefiles solo admiten una capa, lo cual no tiene sentido en la práctica.

2. Los archivos SHP directamente seguros no son seguros y los archivos Shapefile se eliminan fácilmente accidentalmente por virus u otras razones.

3. Es muy ineficiente que GeoServer utilice archivos Shapfile como fuentes de datos.

4. GeoServer no puede analizar los caracteres chinos en Shapfile y se mostrarán como caracteres confusos.

5. La base de datos puede consultar fácilmente información geográfica.

Utilice PostGIS para gestionar datos espaciales

PostGIS admite el índice espacial GIST (Apéndice 1) y formularios estandarizados, lo que puede mejorar en gran medida la eficiencia del procesamiento.

El formato OGC solo proporciona geometrías 2D y el SRID asociado nunca se utiliza en profundidad para solicitudes de entrada y salida. PostGIS admite y amplía todos los objetos y funciones SIG especificados por la especificación "Funciones

simples para

SQL" de la organización OpenGIS. Sus formatos son EWKB, EWKT, agrega soporte para sistemas de coordenadas 3DZ, 3DM y 4D (por supuesto, los estándares de datos 3D y 4D de OGC aún no se han desarrollado completamente) e introduce información SRID en profundidad.

Estructura de la tabla de datos espaciales: hay dos tablas de metadatos requeridas en PostGIS, a saber, SPATIAL_REF_SYS (tabla de referencia espacial) y

GEOMETRY_COLUMNS (columnas de atributos geométricos). almacene el ID numérico y la descripción de texto del sistema de coordenadas utilizado en la base de datos espacial.

El comando shp2pgsql de PostGIS puede importar directamente el Shapfile a la base de datos o exportarlo como un archivo SQL. Se recomienda exportarlo primero como un archivo SQL y luego ejecutar este archivo en la ventana de ejecución de SQL. para importar los datos a la base de datos.

Convierta Shapfile en una declaración SQL:

ruta shp2pgsql nombre del archivo de datos shp nuevo nombre de la tabla de datos gt;

ruta nombre del archivo SQL. sql

Importe directamente Shapfile a la base de datos:

shp2pgsql -c ruta nombre del archivo de datos shpp nuevo nombre de la tabla de datos nombre de la base de datos |psql -d nombre de la base de datos

Ejemplo:

Si el archivo Shapfile "c:road.shp" se importa a la tabla de datos "road", la base de datos es "sjzmap".

1. Ejecute "Símbolo del sistema".

2. Cambie al directorio bin en el directorio de instalación de la base de datos PostgreSQL.

3. Ejecute el comando shp2pgsql en este directorio: "shp2pgsql c:road.shp road gt;

c:road.sql".

4. Si importa este archivo directamente a la base de datos (no recomendado), ejecute el siguiente comando: "shp2pgsql -c c:road.shp road

sjzmap | psql -d sjzmap".

5. Utilice pgAdmin3

para seleccionar la base de datos y luego importar la tabla.