Oracle SQL Developer和PostgreSQL


69

我正在尝试使用Oracle SQL Developer 3.0.04连接到PostgreSQL 9.1数据库,但是到目前为止我没有取得任何成功。

首先,如果我在首选项上添加了第三方驱动程序,则在添加新连接时,PostgreSQL没有选项卡(尽管它对MySQL很好用)。我使用的是JDBC4版本9.1驱动程序,但是尝试了相同版本的JDBC3,但仍然得到相同的结果。

其次,添加新连接时没有像手动配置选项卡那样的东西。最接近的是Oracle选项卡上的Advanced选项,我可以在其中提供一个自定义URL,但是由于抱怨所选的驱动程序(当然)而失败了。

最后,我连接了从XML文件导入连接的内容(以下内容),但它仅显示我的模式,而不显示其中的表。

所以,我的问题是:Orable SQL Developer是否支持PostgreSQL连接?还有其他方法可以在ObjectViewer中显示我的表吗?

<?xml version = '1.0' encoding = 'UTF-8'?>
<References xmlns="http://xmlns.oracle.com/adf/jndi">
    <Reference name="Lumea" className="oracle.jdeveloper.db.adapter.DatabaseProvider" credentialStoreKey="Lumea" xmlns="">
        <Factory className="oracle.jdeveloper.db.adapter.DatabaseProviderFactory"/>
        <RefAddresses>
            <StringRefAddr addrType="user">
                <Contents>lumea</Contents>
            </StringRefAddr>
            <StringRefAddr addrType="subtype">
                <Contents>thirdParty</Contents>
            </StringRefAddr>
            <StringRefAddr addrType="customUrl">
                <Contents>jdbc:postgresql://localhost:5432/versates</Contents>
            </StringRefAddr>
            <StringRefAddr addrType="SavePassword">
                <Contents>true</Contents>
            </StringRefAddr>
            <StringRefAddr addrType="password">
                <Contents>myencryptedpass</Contents>
            </StringRefAddr>
            <StringRefAddr addrType="driver">
                <Contents>org.postgresql.Driver</Contents>
            </StringRefAddr>
            <StringRefAddr addrType="DeployPassword">
                <Contents>true</Contents>
            </StringRefAddr>
        </RefAddresses>
    </Reference>
</References>

Answers:


163

Oracle SQL Developer 4.0.1.14确实支持与PostgreSQL的连接。

编辑

如果用户名和数据库名不同,则应在主机名中指定:(hostname/database?不要忘记?)或hostname:port/database?

(感谢@kinkajou和@ Kloe2378231;有关https://stackoverflow.com/a/28671213/565525的更多详细信息)。


1
除非您的用户名和数据库名不同,否则它将不起作用。听起来像是SQLDeveloper错误,我找不到任何workaroud。
Kloe2378231

@ user2378231在较早的评论中,他和他说的完全一样,我也解释了解决方法。
约翰O

1
这将需要localhost/database?在主机名字段中。
2015年

4
要恢复-如果您具有不同的用户名和数据库名,则应在主机名中指定:(hostname/database?不要忘记?)或hostname:port/database?(关于stackoverflow.com/a/28671213/565525的更多详细信息)
Robert Lujo 2015年

1
起初我无法连接,但我看到'选择数据库'在Dropbox中什么都没有显示。因此可以解决,将数据库名称代替用户名然后进行Test。如果测试成功,则将看到选择数据库Dropbox已启用然后您会看到很多数据库。选择您想要的数据库,然后输入实际的用户名并进行测试,这将成功。
Ankur Srivastava

15

我刚刚下载了适用于OS X(10.9)的SQL Developer 4.0,它刚刚退出测试版。我还下载了最新的Postgres JDBC jar。一劳永逸,我决定安装它(与SQL Dev中其他第三方db驱动程序的方法相同),并且它接受了它。每当我单击“新建连接”时,现在都有一个用于Postgres ...的选项卡,单击该选项卡会显示一个询问数据库连接详细信息的面板。

这个问题的答案已经改变,无论它是否受支持,它似乎都有效。有一个“选择数据库”按钮,如果单击该按钮,将为您提供一个下拉列表,其中包含可用的postgres数据库。创建连接,将其打开,它会列出该数据库中的架构。尽管没有psql命令(\ list等),大多数postgres命令似乎都可以工作。

那些只需要一个工具即可连接到多个数据库引擎的人现在可以使用SQL Developer。


您是否需要在任何字段中使用特殊的语法,还是按原样只是主机名/端口/用户名/密码?尝试时,出现“数据库x不存在”的信息,其中x是我在用户名字段中输入的内容。
乔丹·帕默

@JordanParmer默认情况下,期望数据库名称与用户相同。但是,如果您单击测试按钮,我可以获取它来填充下载列表。嗯 我想我记错了,您可能还需要先创建同名的db,然后才能填充列表。如果仍然有问题,请回复,我将尝试复制我使用的方法并将其添加到答案中。
约翰·奥

我认为可以在sql developer的更新窗口中找到第三方连接器。好的,您拥有Postgres JDBC链接。
Charlesliam 2014年

2
您需要创建一个与您的用户同名的数据库。可以将其保留为空,这样一来,您就可以看到要连接的其他数据库...,然后另一个数据库就会显示在列表中并可以选择。这很尴尬,但目前还很轻松。
约翰O,

1
如上所述,我们在4中添加了支持-但尚未正式支持,又称为未记录的功能。关键字,“还可以”。与所有其他第三方数据库支持的平台一样,我们添加了它们以帮助您将数据库和应用程序迁移到Oracle。
thatjeffsmith 2014年


4

我设法用SQL Developer连接到postgres。我下载了postgres jdbc驱动程序并将其保存在文件夹中。我运行SQL Developer->工具->首选项->搜索-> JDBC我为数据库和数据建模器(可选)定义了postgres jdbc驱动程序。

这是诀窍。创建新连接时,请定义主机名,例如localhost / crm?其中crm是数据库名称。测试连接,工作正常。


1

通过将我的用户名放在“用户名”字段(无密码)并单击“选择数据库”,可以填充数据库列表。不能使用空白的“用户名”字段,我只能以这种方式连接到我的用户数据库。

(这是与SQL Developer 4.0.0.13,Postgres.app 9.3.0.0和postgresql-9.3-1100.jdbc41.jar,FWIW一起使用的。)


能为我提供如何逐步安装postgresql-9.3-1100.jdbc41.jar的信息。Postgresql文档是遵循的捷径。我是java jdbc的新手。
2014年

@Charlesliam我写了一篇关于我的工作的快速博客文章:substars.github.io/2014/01/06/oracle-sql-developer-and-postgres。我在OSX上,但其他平台应该大致相同。
2014年

想要使用相同的方式连接到Redshift数据库,因为它利用了Postgres驱动程序。但是,给我不同的用户名和密码,它不会为我填充数据库
Rakesh Singh 2014年

1

如果没有与用户名同名的数据库,则单击“选择数据库”将失败,并显示诸如“状态:失败-FATAL:数据库“您的用户名”不存在”的错误。

要解决此问题,请5432/database_name?在“端口”字段中输入,其中5432Postgres实例的端口是其中的端口,并且database_nameyour_username可以访问的现有数据库的名称。然后再次单击“选择数据库”,它应该可以工作。现在,您可以选择所需的数据库,然后/database_name?从“端口”字段中删除其他数据库。


1

我认为这个问题需要更新的答案,因为自最初提出以来,PostgreSQL和SQLDeveloper都已进行了多次更新。

我有一个在Azure中运行的PostgreSQL实例,其SSLMODE = Require。当我一直在使用DBeaverCE访问该实例并生成ER图时,我对SQLDeveloper非常熟悉,SQLDeveloper现在是v19.4。

有关下载最新的PostgreSQL JDBC驱动程序及其放置位置的说明正确无误。什么已经改变了,虽然是在哪里配置数据库的访问。

您会找到一个文件$HOME/.sqldeveloper/system19.4.0.354.1759/o.jdeveloper.db.connection.19.3.0.354.1759/connections.json

{
  "connections": [
    {
      "name": "connection-name-goes-here",
      "type": "jdbc",
      "info": {
        "customUrl": "jdbc:postgresql://your-postgresql-host:5432/DBNAME?sslmode=require",
        "hostname": "your-postgresql-host",
        "driver": "org.postgresql.Driver",
        "subtype": "SDPostgreSQL",
        "port": "5432",
        "SavePassword": "false",
        "RaptorConnectionType": "SDPostgreSQL",
        "user": "your_admin_user",
        "sslmode": "require"
      }
    }
  ]
}

您可以将此连接与Data Modeller和SQLDeveloper的管理功能一起使用。在customUrl中指定所有端口,dbname和sslmode是必需的,因为SQLDeveloper在通过JDBC发送的内容中不包括sslmode,因此您必须手工构造它。


0

除非您的用户名和数据库名不同,否则它将不起作用。听起来像是SQLDeveloper错误,我找不到任何workaroud

Oracle SQL Developer连接到PostgreSQL时可能存在一些错误,但是我成功地将PostgreSQL与navicat连接了(我的PostgreSQL用户名和数据库名称不同


解决方案:如果您具有不同的用户名和数据库名,则应在主机名中指定主机名/数据库?(不要忘记?)或主机名:端口/数据库?

1
当我使用Navicat时”如何解决“它不适用于SQL Developer ”的问题?
a_horse_with_no_name

0

Oracle SQL Developer 2020-02支持PostgreSQL,但这只是通过在jdbc dir下添加postgreSQL驱动程序并通过添加为第三方驱动程序来进行配置的基础。

支持的功能:

  • 可以在连接定义中选择多个数据库
  • CRUD操作,例如查询表
  • 计划运作
  • 基本建模支持:显示不带pk,fk,连接的表

不支持的功能:

  • 没有表格或字段完成
  • 标签中没有显示索引
  • 标签中未显示任何限制,例如:fk,pk-s,唯一或其他
  • 编辑器中没有表格或字段补全
  • 没有显示功能,包,触发器,视图

可悲的是,只有在使用PostgreSql连接的情况下,Oracle才应更改此视图后面的查询。例如,对于索引,他们需要使用此查询:从pg_catalog.pg_indexes中选择*;

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.