【问题标题】:How do I import modules or install extensions in Postgres?如何在 Postgres 中导入模块或安装扩展?
【发布时间】:2010-12-06 13:11:33
【问题描述】:

我正在尝试导入几个与 postgres 捆绑在一起的模块,但所有执行此操作的命令(例如 contrib.import 等)都不起作用或找不到。

【问题讨论】:

    标签: postgresql


    【解决方案1】:

    在 Ubuntu 或 Kubuntu(或类似的 Linux 发行版)上安装 PostgreSQL contrib 模块:

    1. 安装 contrib 包: sudo apt-get install postgresql-contrib
    2. 更改为数据库所有者帐户(例如,postgres)。
    3. CREATE EXTENSION "uuid-ossp";

    如果您尝试安装非“受信任”模块,您需要成为超级用户才能安装它们。否则,您只需要对您尝试使用该模块的数据库具有 CREATE 权限即可。

    对于 9.1 之前的版本,执行上面的步骤 #1,然后:

    1. 重启数据库: sudo /etc/init.d/postgresql-8.4 restart

    2. 更改为数据库所有者帐户(例如,postgres)。

    3. 切换到 contrib 模块的目录: /usr/share/postgresql/8.4/contrib/

    4. 使用ls 查看以下模块的列表:

       adminpack               autoinc
       btree_gin               btree_gist
       chkpass                 citext
       cube                    dblink
       dict_int                dict_xsyn
       earthdistance           fuzzystrmatch
       hstore                  insert_username
       int_aggregate           isn
       lo                      ltree
       moddatetime             pageinspect
       pg_buffercache          pgcrypto
       pg_freespacemap         pgrowlocks
       pg_stat_statements      pgstattuple
       pg_trgm                 pgxml
       refint                  seg
       sslinfo                 tablefunc
       test_parser             timetravel
       tsearch2                uuid-ossp
      
    5. 使用以下方法加载 SQL 文件: psql -U user_name -d database_name -f module_name.sql

    例如,如果您的管理用户名为postgres,您的数据库名为storage,而您想要的模块是cube,您可以输入:

    psql -U postgres -d storage -f cube.sql
    

    【讨论】:

    • 在 ubuntu 上的 postgresql 9.1 中,模块位于 /usr/share/postgresql/9.1/extension 中,您必须使用 CREATE EXTENSION 来安装它们。
    【解决方案2】:
    1. 以 postgres 用户身份登录
    2. 使用创建扩展来加载它

    例如,我有一个名为“book”的数据库,

    psql -U postgres 书 创建扩展立方体

    对每个需要的扩展重复,然后 \q 登录

    【讨论】:

    • 脚本语法不正确,必须是psql -U postgres book -c "create extension cube"。而CREATE EXTENSION 是在 Postgres 9.1 中引入的。本题8.4左右。
    • 那些在 7 周内为 7 个数据库寻求 PostgreSQL 9.1+ 帮助的人应该会发现这很有用。
    • 可以确认此方法适用于为 postgres 10.13 加载 tablefunc 扩展,并帮助我避免将 SUPERUSER 权限授予普通用户。
    猜你喜欢
    • 2012-02-19
    • 2020-08-27
    • 2022-11-17
    • 1970-01-01
    • 1970-01-01
    • 2021-05-31
    • 1970-01-01
    • 2010-09-23
    • 1970-01-01
    相关资源
    最近更新 更多