pg_restore导入错误的解决思路

news2024/11/13 23:47:19

背景

开发使用postgresql 数据库,当需要部署时,通过pg_dump导出,通过pg_restore导入,发现导入遇到错误,很多表没有导入。部分报错截图如下:

排查问题

开发中用到了postgresql插件postgis里的地理类型,所以用sql 导出会有很多问题。于是使用pg_dump导出。导出命令如下:

pg_dump -h localhost -p 15431 -U postgres  -F c -b -v -d test1 -x -O -f D:\databases\test1.dump 

1.本地试验(没有带postgis插件)

使用不带postgis插件的镜像测试,使用docker环境

docker run --name some-postgres -e POSTGRES_PASSWORD=dev@local -v E:\docker-postgis:/var/lib/postgresql/data -p 15432:5432  -d postgres:12.0-alpine

首先创建数据库,然后创建用户,之后给用户授予此新建数据库的权限,截图如下:

下图可知此镜像没有postgis插件

导入命令:

pg_restore -h localhost -p 5432 -U test -d test -c -v -x -O /var/lib/postgresql/data/theamtic_map.dump 

报错:

之后给用户授予superuser权限

 ALTER USER test WITH SUPERUSER;

再继续导入,发现报错减少。

 2.带postgis插件的镜像试验

同样创建用户,创建数据库,给用户授予操作数据库所有的权限,报错如下:

 之后修改用户为superuser,alter user test with superuser;

导入

pg_restore -h localhost -p 5432 -U test  -d test -c -v -x -O /var/lib/postgresql/data/theamtic_map.dump 

 导入成功

报的95个错误是因为新的数据库,有些索引不存在

查询可知postgis插件存在

总结 

pg_restore导入成功,第一需要安装的postgresql安装了postgis插件,第二创建的用户要具有superuser权限。

部分查看和创建语句

1.没有postgis插件的镜像
docker run --name some-postgres -e POSTGRES_PASSWORD=dev@local -v E:\docker-postgis:/var/lib/postgresql/data -p 15432:5432  -d postgres:12.0-alpine
通过
docker exec -it container_id /bin/bash 
登录数据库
psql -U postgres -h localhost -p 5432 
创建数据库
create database test;
创建用户
CREATE USER test WITH PASSWORD 'dev@local';
给用户授予数据库权限
GRANT ALL PRIVILEGES ON DATABASE dbname TO user;
给用户授予superuser
ALTER USER your_username WITH SUPERUSER;
查看用户
\du
一旦登录,如果您想切换到另一个用户,比如myuser,您可以使用以下命令:
\c mydatabase myuser
列出所有数据库
\l
查询postgis版本
select postgis_version();
查询postgresql 版本
select version();
查看postgresql data目录
SHOW data_directory;
导入数据库
pg_restore -h localhost -p 5432 -U test -d test -c -v -x -O /var/lib/postgresql/data/theamtic_map.dump 
2.有postgis的镜像
docker run -d --name fct-postgis-12-3.0 -p 54321:5432 -e POSTGRES_PASSWORD=dev@local  -v E:\docker-postgis2:/data geographica/postgis:latest

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1939835.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ORBSLAM3 ORB_SLAM3 Ubuntu20.04 ROS Noetic 虚拟机镜像 下载

下图是build.sh 和 build_ros.sh编译结果截图: slam数据集测试视频: orbslam3 ubuntu20.04 test 下载地址: 链接:https://pan.baidu.com/s/1nre0Y9vig5QXIGU52qCLbQ?pwd9rbi 提取码:9rbi

什么是裸机管理程序?

在这个旨在使最终用户体验尽可能无缝的快节奏环境中,企业不断扩展其网络以处理增加的负载,为了应对可扩展性问题并增强其设备的最佳性能,网络管理员开始使用虚拟化技术。 通过使用管理程序虚拟化网络,网络管理员可以实现灵活、可…

C++基础(3.内和对象)

目录 赋值运算符重载: const限制权限: 隐式类型转换: 再探构造函数: static成员: 有元: 内部类: 赋值运算符重载: 赋值运算符重载是一个默认成员函数,用于完成两个已经存在的对象直接的拷贝赋值.要注…

【STM32 HAL库】全双工I2S+双缓冲DMA的使用

1、配置I2S 我们的有效数据是32位的,使用飞利浦格式。 2、配置DMA **这里需要注意:**i2s的DR寄存器是16位的,如果需要发送32位的数据,是需要写两次DR寄存器的,所以DMA的外设数据宽度设置16位,而不是32位。…

pgsql的update语句在set里进行字段的运算 SET sort = sort +1

一、场景 需求:version 版本字段是记录数据更新的次数,新增时自动填充 version1 ,每更新一次数据 version就自增1。项目里单表插入和更新要手写update语句进行插入和更新。 –表中int4类型的字段 version 是1时,由1变成2 – version 是null…

嵌入式人工智能(10-基于树莓派4B的DS1302实时时钟RTC)

1、实时时钟(Real Time Clock) RTC,全称为实时时钟(Real Time Clock),是一种能够提供实时时间信息的电子设备。RTC通常包括一个计时器和一个能够记录日期和时间的电池。它可以独立于主控芯片工作&#xff…

5.过滤器Filter(doFilter()+chain.doFilter())

过滤器Filter 文章目录 过滤器Filter一、过滤器简介1.定义2.作用3.拦截原理4.常用方法:5.Filter的生命周期4.web.xml中配置5.WebFilter 一、过滤器简介 1.定义 过滤器是对Web应用程序的请求和响应添加功能的Web服务组件(实现 javax.servlet.Filter 接口的 Java 类。) 调用web…

Neuralink首款产品Telepathy:意念控制设备的革新与挑战

近年来,科技领域不断涌现出令人惊叹的突破,其中尤以脑机接口(BCI)技术为代表。近日,Elon Musk的Neuralink公司发布了其首款脑机接口产品Telepathy,引发了广泛关注。本文将详细探讨Telepathy的功能、技术原理…

Java语言程序设计基础篇_编程练习题**15.6(两个消息交替出现)

**15.6(两个消息交替出现) 编写一个程序,当单击鼠标时面板上交替显示两个文本"Java is fun"和"Java is powerful" 代码展示:编程练习题15_6TwoInfo.java package chapter_15;import javafx.application.Application; import javafx…

JavaScript之Web APIs-DOM

目录 DOM获取元素一、Web API 基本认知1.1 变量声明1.2 作用和分类1.3 DOM树1.4 DOM对象 二、获取DOM对象2.1 通过CSS选择器来获取DOM元素2.2 通过其他方式来获取DOM元素 三、操作元素内容3.1 元素.innerTest属性3.2 元素.innerHTML属性 四、操作元素属性4.1 操作元素常用属性4…

mysql无法启动

总是报错: 1、Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xeu mysql.service" for details. 2、ERROR 2002 (HY000): Cant connect to local …

Linux可视化工具-netdata之docker安装

版本要求 docker cli安装 docker pull netdata/netdata docker run -d --namenetdata \ --pidhost \ --networkhost \ -v netdataconfig:/etc/netdata \ -v netdatalib:/var/lib/netdata \ -v netdatacache:/var/cache/netdata \ -v /:/host/root:ro,rslave \ -v /etc/passwd…

常用注意力机制 SENet CBAM ECA

在处理脑电信号时通常会用到一些注意力机制,来给不同的脑电通道不同的权重,进而体现出不同脑电通道在分类中的重要性。下面整理几种常见的通道注意力机制,方便以后查阅。 常用注意力机制 SENet CBAM ECA 注意力机制SENet(Squeeze-and-Excitation Network)SENet原理SENet P…

五. TensorRT API的基本使用-load-model

目录 前言0. 简述1. 案例运行2. 代码分析2.1 main.cpp2.2 model.hpp2.3 model.cpp2.4 其它 总结下载链接参考 前言 自动驾驶之心推出的 《CUDA与TensorRT部署实战课程》,链接。记录下个人学习笔记,仅供自己参考 本次课程我们来学习课程第五章—TensorRT …

达梦数据库审计日志采集

目录 1. 审计功能简介2. dm8官方技术参考文档3. dm8审计功能配置3.1 登录审计用户3.2 开启审计开关3.3 查询审计日志3.4 审计设置3.4.1 配置语句级审计3.4.2 取消语句级审计3.5 审计日志查阅4. python获取dm8审计日志1. 审计功能简介 审计机制是 DM 数据库管理系统安全管理的重…

第十一课:综合项目实践

下面是我们搭建的一个综合实践的拓扑图: 我们要完成以下目标: 网络中有3个不同部门,均可自动获取地址各部门可相互访问,也可访问内部服务网172.16.100.1,PC1不允许访问互联网,PC1和PC3可以访问互联网内网服…

nginx配置文件说明

Nginx的配置文件说明 Nginx配置文件的主要配置块可以分为三个部分:全局配置块(events和http块),events块和http块。这三个部分共同定义了Nginx服务器的整体行为和处理HTTP请求的方式。 全局配置块: 包含了影响Nginx服…

Vue3组件样式

在 Vue3开发中&#xff0c;我们经常需要对元素的类和样式进行动态控制。本文将详细介绍如何使用 Vue.js 的特性来实现这一目标。 class 绑定 绑定对象&#xff1a; 在 Vue.js 中&#xff0c;我们可以使用对象语法来绑定 class。例如&#xff1a; <div :class"{ act…

卸载顽固的驱动或软件

在Windows系统&#xff0c;有些软件或驱动&#xff0c;为了防止被卸载&#xff0c;特地在C:\Windows\System32\drivers目录里&#xff0c;生成xxx.sys文件。这些xxx.sys文件&#xff0c;无法直接删除&#xff0c;用杀毒软件也很难卸载。     这里介绍一种方法&#xff0c;可以…

基于GTX的64B66B编码的自定义接收模块(高速收发器二十二)

点击进入高速收发器系列文章导航界面 1、自定义PHY顶层模块 前文设计了64B66B自定义PHY的发送模块&#xff0c;本文完成自定义PHY剩余的模块的设计&#xff0c;整体设计框图如下所示。 其中phy_tx是自定义PHY的发送数据模块&#xff0c;scrambler是加扰模块&#xff0c;rx_slip…