赏金编辑:我已经离开了最初的问题,但希望对 Postgres 似乎陷入的整个权限崩溃有一个很好的答案。
“导入和导出客户端数据库:现场指南”
我今天刚得到这份工作,我们需要使用PostgreSQL。
客户端有两台主机,它们只使用phpPgAdmin来访问数据库。没有 SSH。
我们需要导出数据,然后将其导入本地开发机器。
在MySQL的方式上是明智的,我对正确的过程有点迷茫。
有 PostgreSQL >> 数据库 >> 导出
,从那里得到:
我一直在查阅文档,但说实话,我找不到简单的解释,目前并不真正关心 db 或 Postgres。我们需要做的就是处理网站 PHP。
给我一个概要/备忘单/指导我的系统管理员syblings。
编辑:
将问题更改为在导入数据库时包含 PostgreSQL 权限。
就权限而言,设置新的 PostgreSQL 服务器似乎确实有更多内容。
我专门询问 phpPgAdmin,因为我的服务器不是 localhost 并且没有 GUI。
我觉得这是一个权限问题http://pgedit.com/public/sql/acl_admin/index.html
澄清了客户端框上没有 SSH。
仍然找不到关于整个过程的简明文档。在我有一个更清晰的想法之前,我真的在逃避任务。可能希望轻松转换为 MySQL db。
出口
进口
关于权限,只需打开数据库转储(它是纯文本)并查找它尝试更改当前用户或设置表所有者的行。然后只需进行搜索/替换并用您的新用户名替换原始所有者。完全无需担心授予/更改权限:D
从开发到生产的过程中,我们一直都必须这样做,原来的数据库/表所有者将是开发人员,一旦我们准备好启动,我们需要将其更改为客户帐户。
我们总是使用控制台
pg_dump
和其他相关的命令行工具工作,但我希望这些映射到您在 Web 界面中获得的选项。phpPgAdmin 导出使用 pg_dump。如果你想知道它在做什么,你可以阅读它。
您可能还希望将其导出为 SQL 而不是 COPY。COPY 适用于 Postgres,如果您想尝试使用不同的数据库,则需要 SQL。如果您习惯于不同的数据库,也更容易理解。
您将使用“结构和数据”得到一个 sql 文件,该文件将从数据库表结构开始,然后是所有数据,然后是约束和键。
正如 sascha 所指出的,您可能遇到了权限问题。我总是发现删除权限行或将它们注释掉更容易,因为这只是用于开发数据库。删除/评论/更改其中带有“所有者”的行。喜欢
每个 CREATE TABLE 语句之后都会有其中一个来设置表所有者。
输入
如果您有 SQL 错误(我经常看到,具体取决于数据。带有奇数字符的字符串可能会很痛苦),拆分文件并首先复制结构并将其作为标准运行可能会更容易SQL 查询。然后从数据开始,一次导入一张表。当您将其切成部分时,它可以更容易地找到错误。尤其是在处理非常无用的错误消息时。
是的,它需要进行大量的复制和粘贴工作,但它可以完成工作,并且可能会花费更少的时间然后将其移植到 MySQL 中,然后必须更改 PHP 以连接并从 MySQL 而不是 Postgres 获取数据。
PhpPgAdmin 和 pgadminIII 都具有运行 SQL 语句的能力。
pgAdminIII -> 选择数据库 -> 选择“运行任意 SQL 查询”按钮。PhpPgAdmin -> 选择数据库 -> 选择“SQL”链接。
老实说,这是我发现的最不烦人的移动数据库的方式。这需要更长的时间,但前提是您不会遇到错误。
运行,不要离开您的托管服务提供商。您不仅希望通过 phppgadmin 直接访问数据。
phppgadmin(以及 phpmyadmin)在这些情况下有很大的问题。你将无法获得转储。
推理:使用 PHP 和 apache,你有一个最大值。执行时间以及运行脚本的内存限制。现在就执行时间/内存而言,现在可能不是问题,但是随着数据库的增长,您会遇到它。
要获得良好的转储,您至少需要访问数据库(如果数据库直接暴露在网络中,这当然应该是 SSL 安全的)。无论是通过 SSH 还是直接通过 psql,否则我真的看不出获得转储的好选择。phppgadmin(或 phpmyadmin)可能便于通过数据库浏览进行一些更改,进行一些(较小的)选择等等,但如果您需要获取可能大量的数据,则不是。
在执行备份/恢复时,由于 PHP 超时或内存使用过多,这两种工具在各种情况下都失败了。
至于如何备份原始 postgres 文档的指南通常非常好:http ://www.postgresql.org/docs/8.3/static/backup.html
现在对于您的问题,如何获得一个不错的数据库转储:
我没有足够的压力让 SSH 或 psql 直接访问主机。如果您的托管服务提供商不允许您访问,请设置一个本地 PostgreSQL,创建一个游乐场数据库并将您希望使用的 pg_dump 命令发送给他们,让他们将其放在受 SSL 和密码保护的目录中,然后从那里下载。