【问题标题】:How do I import modules or install extensions in PostgreSQL 9.1+?如何在 PostgreSQL 9.1+ 中导入模块或安装扩展?
【发布时间】:2012-02-19 23:35:34
【问题描述】:

首先,如果您没有使用 9.1+,请refer to this question

如何安装 PostgreSQL 9.1 的扩展?

【问题讨论】:

    标签: postgresql postgresql-9.1


    【解决方案1】:

    每个版本的 Postgresql 可用的扩展有所不同。如前所述,检查哪些扩展可用的简单方法是:

    SELECT * FROM pg_available_extensions;
    

    如果您正在寻找的扩展可用,您可以使用以下方式安装它:

    CREATE EXTENSION 'extensionName';
    

    或者如果你想放弃它使用:

    DROP EXTENSION 'extensionName';
    

    使用psql,您还可以使用\dx 检查扩展是否已成功安装,并使用\dx+ extensioName 查找有关扩展的更多详细信息。它返回有关扩展的附加信息,例如与它一起使用的包。

    如果您的 Postgres 版本中没有该扩展,那么您需要下载必要的二进制文件和库并将其定位在 /usr/share/conrib

    【讨论】:

    • 去掉引号。这行得通:create extension intarray;create extension 'intarray';
    【解决方案2】:

    对于 postgrersql10

    我已经解决了

    yum install postgresql10-contrib
    

    不要忘记在 postgresql.conf 中激活扩展

    shared_preload_libraries = 'pg_stat_statements'
    pg_stat_statements.track = all
    

    然后当然重启

    systemctl restart postgresql-10.service 
    

    你可以在这里找到所有需要的扩展

    /usr/pgsql-10/share/extension/
    

    【讨论】:

      【解决方案3】:

      如果您有 SUSE,如何下载和安装。例如,我正在下载 tablefunc 模块,以便可以使用交叉表。我有 PostgreSQL 9.6.1。

      右键桌面,终端,输入:

      sudo zypper in postgreql-contrib
      

      输入凭据,继续键入:

      y
      

      运行查询(我从 pgAdminIII 运行我的):

      CREATE EXTENSION tablefunc;
      

      您现在应该拥有crosstab 函数。

      我不必重新启动。

      【讨论】:

        【解决方案4】:

        Postgrseql 9.1 提供了一个新命令CREATE EXTENSION。您应该使用它来安装模块。

        Modules provided in 9.1 can be found here.。包括,

        adminpack , auth_delay , auto_explain , btree_gin , btree_gist
        , chkpass , citext , cube , dblink , dict_int
        , dict_xsyn , dummy_seclabel , earthdistance , file_fdw , fuzzystrmatch
        , hstore , intagg , intarray , isn , lo
        , ltree , oid2name , pageinspect , passwordcheck , pg_archivecleanup
        , pgbench , pg_buffercache , pgcrypto , pg_freespacemap , pgrowlocks
        , pg_standby , pg_stat_statements , pgstattuple , pg_test_fsync , pg_trgm
        , pg_upgrade , seg , sepgsql , spi , sslinfo , tablefunc
        , test_parser , tsearch2 , unaccent , uuid-ossp , vacuumlo
        , xml2
        

        例如,如果您想安装 earthdistance,只需使用以下命令:

        CREATE EXTENSION earthdistance;
        

        如果您想安装名称中带有连字符的扩展程序,例如uuid-ossp,则需要将扩展​​程序名称用双引号引起来:

        CREATE EXTENSION "uuid-ossp";
        

        【讨论】:

        • 为方便起见,删除扩展名:DROP EXTENSION extension_name [, ...]
        【解决方案5】:

        虽然 Evan Carrol 的回答是正确的,但请注意,您需要安装 postgresql contrib 包才能使 CREATE EXTENSION 命令正常工作。

        在 Ubuntu 12.04 中会这样:

        sudo apt-get install postgresql-contrib
        

        重启postgresql服务器:

        sudo /etc/init.d/postgresql restart
        

        所有可用的扩展都在:

        /usr/share/postgresql/9.1/extension/
        

        现在您可以运行 CREATE EXTENSION 命令。

        【讨论】:

        • 我试图安装 citext,但谷歌没有找到这个页面,这个答案也没有出现。现在 citext 在这个页面上被提到了 3 次 :-) 来谷歌,做那个索引的事情。
        • 注意这个包还需要在pgsql bin中添加vacuumlo脚本。此外,您可能需要使用ln -s 将vacuumlo 链接到/usr/bin
        【解决方案6】:

        进入psql终端放:

        \i <path to contrib files>
        

        在 ubuntu 中通常是/usr/share/postgreslq/&lt;your pg version&gt;/contrib/&lt;contrib file&gt;.sql

        【讨论】:

        • 这是 9.1 之前的版本。不要在 9.1+ 中使用此方法。
        【解决方案7】:

        除了由核心 PostgreSQL 开发团队维护和提供的扩展之外,还有第三方提供的扩展。值得注意的是,有一个专门用于此目的的网站:http://www.pgxn.org/

        【讨论】:

          猜你喜欢
          • 2010-12-06
          • 2014-11-23
          • 2021-06-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-05-08
          • 2021-05-31
          • 1970-01-01
          相关资源
          最近更新 更多