如何还原Postgres转储

时间:2018-10-22 15:37:53

标签: sql postgresql

我们的开发人员已从postgresql(file.sql)向我们发送了一个转储文件,我们不知道如何还原它,我们已经尝试过

psql -U <username> -d <dbname> -1 -f <filename>.sql

并收到一个错误,表明“超级用户”无法通过密码验证 这是什么意思?我应该输入笔记本电脑的超级用户吗?还是数据库用户?

2 个答案:

答案 0 :(得分:0)

您可以尝试以下几行:

library(ggplot2)

h$row.name <- factor(as.character(h$row.name), levels = h$row.name, labels = h$row.name)

ggplot(h, aes(x = row.name, y = BMP2, fill = type)) +
  geom_bar(stat = "identity", position = "dodge")

其中“主机名”是Postgresql服务器的主机名(localhost),“端口”是侦听Postgresql服务器的端口(5432) ,“ postgres”是用户名,“ dbname”是数据库名称

答案 1 :(得分:0)

pg_dump不会转储用户,但是会转储他们的权限。如果习惯将“超级用户”设置为某个对象的所有者,那么您将需要首先在实例上创建该用户。由于您使用的是class BaseGeometry(dict): _ao = None _op = None def __init__(self, iterable=None): if iterable is None: iterable = {} self.update(iterable) def __setattr__(self, key, value): """sets the attribute""" if key in {'_ao','_op', '_ipython_canary_method_should_not_exist_'}: super(BaseGeometry, self).__setattr__(key,value) else: self[key] = value def __setattribute__ (self, key, value): if key in {'_ao','_op', '_ipython_canary_method_should_not_exist_'}: super(BaseGeometry, self).__setattr__(key,value) else: self[key] = value def __setitem__(self, key, value): dict.__setitem__(self, key, value) def __getattribute__ (self, name): return super(BaseGeometry, self).__getattribute__(name) def __getattr__(self, name): try: if name in {'_ao','_ipython_canary_method_should_not_exist_'}: return super(BaseGeometry, self).__getattr__(k) return dict.__getitem__(self, name) except: raise AttributeError("'%s' object has no attribute '%s'" % (type(self).__name__, name)) def __getitem__(self, k): return dict.__getitem__(self, k) ,因此在向不存在的用户添加权限时可能会失败。您可以尝试使用-1来运行转储中的每个语句,即使在设置权限时出错也会继续执行。

注意:现在,所有对象将由与您连接的用户拥有。