ChatGPT解决这个技术问题 Extra ChatGPT

Oracle SQL 开发人员和 PostgreSQL

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

首先,如果我在首选项中添加第三方驱动程序,则在添加新连接时没有 PostgreSQL 选项卡(尽管它适用于 MySQL)。我正在使用 JDBC4 版本 9.1 驱动程序,但我尝试了相同版本的 JDBC3 并且仍然得到相同的东西。

其次,添加新连接时没有像手动配置选项卡那样的功能。最接近的是 Oracle 选项卡上的“高级”选项,我可以在其中提供自定义 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>

4
4 revs, 2 users 59%

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

下载 Postgres 的 JDBC 驱动程序 (http://jdbc.postgresql.org/download.html)

在 SQL Developer 中,转到工具 → 首选项,数据库 → 第三方 JDBC 驱动程序并添加 jar 文件(有关分步示例,请参见 http://www.oracle.com/technetwork/products/migration/jdbc-migration-1923524.html )

现在只需创建一个新的数据库连接,而不是 Oracle,选择 PostgreSQL 选项卡

编辑:

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

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


除非您的用户名和数据库名不同,否则它将不起作用。这听起来像一个 SQLDeveloper 错误,我找不到任何解决方法。
@user2378231在我较早的评论中说的和他的完全一样,我也解释了解决方法。
它需要在主机名字段中使用 localhost/database?
恢复 - 如果您有不同的用户名和数据库名,应在主机名中指定:hostname/database?(不要忘记 ?)或 hostname:port/database?(有关 stackoverflow.com/a/28671213/565525 的更多详细信息)
起初我无法连接,我看到“选择数据库”在 dropbox 中没有显示任何内容。所以这里是解决方法,将数据库名称放在用户名的位置,然后测试。如果成功,那么你将看到选择数据库 dropbox 已启用你可以在那里看到很多数据库。选择你想要的任何一个,然后输入实际的用户名和测试,它就会成功。
J
John O

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

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

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


您是否需要对任何字段使用特殊语法,或者它只是主机名/端口/用户名/密码?当我尝试它时,我得到“数据库 x 不存在”,其中 x 是我在用户名字段中输入的内容。
@JordanParmer 默认情况下,它期望数据库名称与用户相同。但是,如果您单击测试按钮,我可以让它填充下载列表。唔。我想我记错了,您可能还需要先创建同名数据库,然后才能填充列表。如果您仍然有问题,请回复,我将尝试复制我使用的方法并将其添加到答案中。
我认为第三方连接器可以在 sql developer 的更新窗口中找到。幸好你有 Postgres JDBC 链接。
您需要创建一个与您的用户同名的数据库。它可以留空,这样做让您看到要连接的其他数据库......然后另一个出现在列表中并且可以选择。这很尴尬,但现在是一个相当轻松的解决方法。
如上所述,我们在 4 中添加了支持 - 但尚未正式支持,AKA 是未记录的功能。关键字,“还”。与所有其他 3rd 方数据库支持的平台一样,我们添加它们以帮助您将数据库和应用程序迁移到 Oracle。
D
DrColossos

Oracle SQL Developer 不支持与 PostgreSQL 的连接。改为使用 pgAdmin 连接到 PostgreSQL,您可以从以下 URL http://www.pgadmin.org/download/windows.php 获取它


不再正确。 sql developer 支持版本 >= 4 的 postgres
P
Panagiotis Piperopoulos

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

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


J
James McPherson

我认为这个问题需要一个更新的答案,因为 PostgreSQL 和 SQLDeveloper 自最初被问到以来已经更新了好几次。

我有一个在 Azure 中运行的 PostgreSQL 实例,SSLMODE=Require。虽然我一直在使用 DBeaverCE 访问该实例并生成一个 ER 图,但我已经非常熟悉 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,因此您必须手动构建它。


s
substars

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

(这是使用 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 Documentation 是一个相当容易遵循的捷径。我是java jdbc的新手。
@Charlesliam 我写了一篇关于我所做的快速博客文章:substars.github.io/2014/01/06/oracle-sql-developer-and-postgres。我在 OSX 上,但其他平台应该基本相同。
想要使用相同的方式连接到 Redshift 数据库,因为它使用 Postgres 驱动程序。但它不会为我填充数据库,给定不同的用户名和密码
G
GreenGiant

如果没有与用户名同名的数据库,则单击“选择数据库”将失败,并出现类似“状态:失败 - 致命:数据库“您的用户名”不存在”的错误

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


a
a_horse_with_no_name

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

支持的功能:

可以在连接定义中选择的多个数据库

CRUD 操作,如查询表

计划运作

基本建模支持:显示没有 pk、fk、连接的表

不支持的功能:

没有表格或字段完成

选项卡中不显示索引

选项卡中不显示任何约束,例如:fk、pk-s、unique 或其他

编辑器中没有表格或字段完成

没有显示函数、包、触发器、视图

可悲的是,Oracle 应该只在 PostgreSql 连接的情况下更改此视图后面的查询。例如对于他们需要使用这个查询的索引: select * from pg_catalog.pg_indexes;


M
Mike Liu

除非您的用户名和数据库名不同,否则它将不起作用。这听起来像一个 SQLDeveloper 错误,我找不到任何解决方法

可能是Oracle SQL Developer在连接postgresql时出现了一些错误。但是我将postgresql与navicat连接成功。(我的postgresql用户名和数据库名称不同


解决方法:如果你有不同的用户名和数据库名,应该在hostname中指定一个:hostname/database? (不要忘记?)或主机名:端口/数据库?。
“当我使用 Navicat 时”如何解决“它不能与 SQL Developer 正常工作”的问题?