从非备份文件“挂载” PostgreSQL数据库

时间:2018-07-27 06:29:41

标签: postgresql

我得到了一个从PostgreSQL数据库提取数据的项目。我以前没有使用PostgreSQL的经验,但是我要进行的项目是对现有代码进行错误修复,因此连接到引擎并获取数据的所有逻辑都已经就绪。

我遇到的问题是数据库是以直接来自源HDD的文件夹和文件的形式提供给我的,而不是备份(这种情况不会发生,因此,“请客户为您提供备份而是这里不是一个选择)。

该文件夹还包含实际的PostgreSQL二进制文件,因此我查看了版本(9.4.14),然后从PostgreSQL站点下载了最接近的版本(9.4.18)并进行了安装。现在,我要做的就是一些如何查看给定数据文件的方法。

我尝试了将数据文件夹的内容复制到已安装的数据文件夹中的尝试,但是在PostgreSQL服务无法启动之后。

我确实在conf文件中找到了一个选项:

#data_directory = 'ConfigDir'

我将其更改为:

data_directory = 'C:\customer\data'

但是,此后该服务将无法启动。

1 个答案:

答案 0 :(得分:0)

服务使用的数据目录是通过服务命令行定义的,该命令行将覆盖postgresql.conf中定义的任何属性。

您需要重新创建服务才能更改数据目录,例如:

删除服务:

pg_ctl -unregister -N postgresql-9.1

postgresql-9.1是服务的“真实”名称,而不是“显示名称”。您可以在“服务”应用内的服务属性中看到它。

然后使用正确的数据目录重新创建服务:

pg_ctl -register -D -D c:\customer\data -N postgresql-9.1

在Windows中“调试”启动错误的另一种方法是从命令行启动Postgres(而不是通过服务),因为启动过程中的某些错误未记录在Postgres日志文件中,但显示在命令行中。您可以使用以下方法做到这一点:

pg_ctl  start -D c:\customer\data`

如果bin目录不在您的PATH中,则需要在命令行上指定该目录的完整路径,例如:c:\Postgres9.1\bin\pg_ctl