AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 5141
Accepted
Gareth
Gareth
Asked: 2009-05-06 20:05:27 +0800 CST2009-05-06 20:05:27 +0800 CST 2009-05-06 20:05:27 +0800 CST

你能解释一下使用 phpPgAdmin 导出然后导入 PostgreSQL 吗?(以及权限是什么?)

  • 772

赏金编辑:我已经离开了最初的问题,但希望对 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。

linux database database-administration postgresql
  • 4 4 个回答
  • 8736 Views

4 个回答

  • Voted
  1. Best Answer
    Jordan S. Jones
    2009-05-06T20:14:13+08:002009-05-06T20:14:13+08:00

    出口

    1. 登录
    2. 导航到“导出”选项卡
    3. 单击“结构和数据”单选按钮
    4. 单击“下载”单选按钮
    5. 单击“导出”按钮并将其保存到本地计算机。

    进口

    1. 导航到http://www.pgadmin.org/下载pgAdmin III(更好的免费 Postgres GUI 工具之一)
    2. 安装它
    3. 使用它来满足您的所有 Postgres 需求。
    • 4
  2. saschabeaumont
    2009-05-06T21:47:46+08:002009-05-06T21:47:46+08:00

    关于权限,只需打开数据库转储(它是纯文本)并查找它尝试更改当前用户或设置表所有者的行。然后只需进行搜索/替换并用您的新用户名替换原始所有者。完全无需担心授予/更改权限:D

    从开发到生产的过程中,我们一直都必须这样做,原来的数据库/表所有者将是开发人员,一旦我们准备好启动,我们需要将其更改为客户帐户。

    我们总是使用控制台pg_dump和其他相关的命令行工具工作,但我希望这些映射到您在 Web 界面中获得的选项。

    • 2
  3. Simurr
    2009-05-12T08:52:02+08:002009-05-12T08:52:02+08:00

    phpPgAdmin 导出使用 pg_dump。如果你想知道它在做什么,你可以阅读它。

    您可能还希望将其导出为 SQL 而不是 COPY。COPY 适用于 Postgres,如果您想尝试使用不同的数据库,则需要 SQL。如果您习惯于不同的数据库,也更容易理解。

    您将使用“结构和数据”得到一个 sql 文件,该文件将从数据库表结构开始,然后是所有数据,然后是约束和键。

    正如 sascha 所指出的,您可能遇到了权限问题。我总是发现删除权限行或将它们注释掉更容易,因为这只是用于开发数据库。删除/评论/更改其中带有“所有者”的行。喜欢

    ALTER TABLE schema.table OWNER TO pguser;
    

    每个 CREATE TABLE 语句之后都会有其中一个来设置表所有者。

    输入

    如果您有 SQL 错误(我经常看到,具体取决于数据。带有奇数字符的字符串可能会很痛苦),拆分文件并首先复制结构并将其作为标准运行可能会更容易SQL 查询。然后从数据开始,一次导入一张表。当您将其切成部分时,它可以更容易地找到错误。尤其是在处理非常无用的错误消息时。

    是的,它需要进行大量的复制和粘贴工作,但它可以完成工作,并且可能会花费更少的时间然后将其移植到 MySQL 中,然后必须更改 PHP 以连接并从 MySQL 而不是 Postgres 获取数据。

    PhpPgAdmin 和 pgadminIII 都具有运行 SQL 语句的能力。

    pgAdminIII -> 选择数据库 -> 选择“运行任意 SQL 查询”按钮。PhpPgAdmin -> 选择数据库 -> 选择“SQL”链接。

    老实说,这是我发现的最不烦人的移动数据库的方式。这需要更长的时间,但前提是您不会遇到错误。

    • 2
  4. Martin M.
    2009-06-12T14:44:54+08:002009-06-12T14:44:54+08:00

    运行,不要离开您的托管服务提供商。您不仅希望通过 phppgadmin 直接访问数据。

    phppgadmin(以及 phpmyadmin)在这些情况下有很大的问题。你将无法获得转储。

    推理:使用 PHP 和 apache,你有一个最大值。执行时间以及运行脚本的内存限制。现在就执行时间/内存而言,现在可能不是问题,但是随着数据库的增长,您会遇到它。

    要获得良好的转储,您至少需要访问数据库(如果数据库直接暴露在网络中,这当然应该是 SSL 安全的)。无论是通过 SSH 还是直接通过 psql,否则我真的看不出获得转储的好选择。phppgadmin(或 phpmyadmin)可能便于通过数据库浏览进行一些更改,进行一些(较小的)选择等等,但如果您需要获取可能大量的数据,则不是。

    在执行备份/恢复时,由于 PHP 超时或内存使用过多,这两种工具在各种情况下都失败了。

    至于如何备份原始 postgres 文档的指南通常非常好:http ://www.postgresql.org/docs/8.3/static/backup.html

    现在对于您的问题,如何获得一个不错的数据库转储:

    • 使用“正常”的 SQL 格式(是的,文档说它要慢得多,但我发现它是最可靠的选择)
    • 不要在 phppgadmin 中“显示”转储,而是下载它(根据 php 安装和创建转储所需的时间,压缩或不压缩可能会或可能不会工作,实际上“显示”选项也是如此)

    我没有足够的压力让 SSH 或 psql 直接访问主机。如果您的托管服务提供商不允许您访问,请设置一个本地 PostgreSQL,创建一个游乐场数据库并将您希望使用的 pg_dump 命令发送给他们,让他们将其放在受 SSL 和密码保护的目录中,然后从那里下载。

    • 0

相关问题

  • 多操作系统环境的首选电子邮件客户端

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve