使用qgis将gdb数据导入到postgreSQL中
准备工作
安装QGIS
在qgis中看一眼数据
-
点击顶部菜单栏中的“图层”(Layer) -> “添加图层”(Add Layer) -> “添加矢量图层”(Add Vector Layer)。
-
在弹出的窗口中,点击“源类型”(Source Type)下拉菜单,并选择“目录”(Directory)。
-
在“类型”(Type)下拉菜单中选择“FileGDB”。
在gqis中执行sql
在QGIS的主菜单中,选择数据库 > DB Manager > DB Manager。
SELECT * FROM information_schema.tables WHERE table_name = 'name';
连接PostgreSQL 数据库
QGIS
中,PostgreSQL
右键打开菜单,点击菜单项 New Connection
打开数据库连接创建界面。
tip
如果一直弹 enter certificates,百分百账号密码不对!
gdb的样子
操作
方法一:Toolbox中操作 (一个一个)
缺点
你得一个一个将gdb中的所有图层通过qgis导入到postgreSQL中,太麻烦了。
方法二: 使用python (将gdb整个导入到postgres中)
- 打开
python console
- 弹出命令行窗口
import os
os.system('cmd.exe')
- 执行命令
ogr2ogr -f "PostgreSQL" PG:"host=xxx.xxx.xx.xxx user=xx password=xxx dbname=xxx" "F:\test.gdb" -overwrite -lco SPATIAL_INDEX=YES -lco LAUNDER=NO -progress
知识点
1. 解释ogr2ogr命令
-overwrite:如果目标表已经存在,则先删除旧表,再重新创建并导入数据。
-lco LAUNDER=NO:保留字段名的原始大小写格式。
-lco SPATIAL_INDEX=YES:在导入的几何列上创建空间索引。
2. 执行命令后,命令行输出的是乱码?
执行命令:
chcp 65001
3. 执行了上面的 ogr2ogr
命令,然后修改了某个图层的name,然后再次执行上面的 ogr2ogr
命令会报错?
是因为我-overwrite -lco SPATIAL_INDEX=YES,创建了空间索引。
所以当我修改了某个图层数据的名字,然后再次执行ogr2ogr时会出现索引冲突!!!!!!
4. qgis怎么看有没有创建空间索引?
直接看表结构咯
TODO