ChatGPT解决这个技术问题 Extra ChatGPT

Oracle SQL Developer and PostgreSQL

I'm trying to connect to a PostgreSQL 9.1 database using Oracle SQL Developer 3.0.04, but I'm not having any success so far.

First, if I add a third party driver on preferences, when adding a new connection there's no tab for PostgreSQL (it works fine for MySQL though). I'm using a JDBC4 version 9.1 driver, but I tried a JDBC3 of the same version and still get the same thing.

Second, there's nothing like manual configuration tab when adding a new connection. The closest is the Advanced option on Oracle tab, where I can provide a custom URL, but it fails because complains about the selected Driver (of course).

Finally, I got connected importing a connection from an XML file (contents below), but it displays only my schemas and doesn't show my tables inside them.

So, my question is: does Orable SQL Developer support PostgreSQL connections? Is there any other way to have my tables being displayed in the 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 surely does support connections to PostgreSQL.

download JDBC driver for Postgres (http://jdbc.postgresql.org/download.html)

in SQL Developer go to Tools → Preferences, Database → Third Party JDBC Drivers and add the jar file (see http://www.oracle.com/technetwork/products/migration/jdbc-migration-1923524.html for step by step example)

now just make a new Database Connection and instead of Oracle, select PostgreSQL tab

Edit:

If you have different user name and database name, one should specify in hostname: hostname/database? (do not forget ?) or hostname:port/database?.

(thanks to @kinkajou and @Kloe2378231; more details on https://stackoverflow.com/a/28671213/565525).


Except that it will not work if your user name and database name are differents. It sounds like an SQLDeveloper bug and i can't find any workaroud.
@user2378231In my earlier-dated comment that says the same exact thing as his, I explained the workaround too.
It would require localhost/database? in hostname field.
To resume - if you have different user name and database name, one should specify in hostname: hostname/database? (do not forget ?) or hostname:port/database? (more details on stackoverflow.com/a/28671213/565525)
At first i was not able to connect and i saw 'choose database' showing nothing in dropbox.So here is work around, put the database name in place of user name then Test .if its success , then you will see choose database dropbox enabled and you can see a lot of databases there .select which ever you want to , then put the actual username and test , it will be success.
J
John O

I've just downloaded SQL Developer 4.0 for OS X (10.9), it just got out of beta. I also downloaded the latest Postgres JDBC jar. On a lark I decided to install it (same method as other third party db drivers in SQL Dev), and it accepted it. Whenever I click "new connection", there is a tab now for Postgres... and clicking it shows a panel that asks for the database connection details.

The answer to this question has changed, whether or not it is supported, it seems to work. There is a "choose database" button, that if clicked, gives you a dropdown list filled with available postgres databases. You create the connection, open it, and it lists the schemas in that database. Most postgres commands seem to work, though no psql commands (\list, etc).

Those who need a single tool to connect to multiple database engines can now use SQL Developer.


Is there a special syntax you need to use for any of the fields or is it simply hostname/port/username/password as is? When I try it, I get 'database x doesn't exist' where x is what I entered in the username field.
@JordanParmer It is expecting a database name the same as the user, by default. If you click the test button, though, I can get it to populate the download list. Hmm. I think I am misremembering, you may also need to create the same-named db first as well, before it will populate the list. If you still have trouble, please reply and I will attempt to duplicate the method I used and add it to the answer.
I thought the third party connector can be found on update windows of sql developer. Good thing you have Postgres JDBC links.
You need to create a database with the same name as your user. It can be left empty, doing so let's you see the other databases to connect to... then the other show up in the list and can be chosen. It's awkward, but a rather painless workaround for now.
We added the support in 4 as described above - but it's not officially supported yet, AKA an undocumented feature. Keyword, being 'yet.' As with all of the other 3rd party database supported platforms, we add them to help you migrate your databases and applications to Oracle.
D
DrColossos

Oracle SQL Developer doesn't support connections to PostgreSQL. Use pgAdmin to connect to PostgreSQL instead, you can get it from the following URL http://www.pgadmin.org/download/windows.php


no longer correct. sql developer supports postgres for versions >= 4
P
Panagiotis Piperopoulos

I managed to connect to postgres with SQL Developer. I downloaded postgres jdbc driver and saved it in a folder. I run SQL Developer -> Tools -> Preferences -> Search -> JDBC I defined postgres jdbc driver for the Database and Data Modeler (optional).

This is the trick. When creating new connection define Hostname like localhost/crm? where crm is the database name. Test the connection, works fine.


J
James McPherson

I think this question needs an updated answer, because both PostgreSQL and SQLDeveloper have been updated several times since it was originally asked.

I've got a PostgreSQL instance running in Azure, with SSLMODE=Require. While I've been using DBeaverCE to access that instance and generate an ER Diagram, I've gotten really familiar with SQLDeveloper, which is now at v19.4.

The instructions about downloading the latest PostgreSQL JDBC driver and where to place it are correct. What has changed, though, is where to configure your DB access.

You'll find a file $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"
      }
    }
  ]
}

You can use this connection with both Data Modeller and the admin functionality of SQLDeveloper. Specifying all the port, dbname and sslmode in the customUrl are required because SQLDeveloper isn't including the sslmode in what it sends via JDBC, so you have to construct it by hand.


s
substars

I got the list of databases to populate by putting my username in the Username field (no password) and clicking "Choose Database". Doesn't work with a blank Username field, I can only connect to my user database that way.

(This was with SQL Developer 4.0.0.13, Postgres.app 9.3.0.0, and postgresql-9.3-1100.jdbc41.jar, FWIW.)


can you provide me how to install the postgresql-9.3-1100.jdbc41.jar step by step. Postgresql Documentation is quite a shortcut to follow. I'm new to java jdbc.
@Charlesliam I wrote a quick blog post about what I did: substars.github.io/2014/01/06/oracle-sql-developer-and-postgres. I'm on OSX but other platforms should be mostly the same.
Wanted to connect to Redshift database using the same way, since it utilizes Postgres drivers. But it doesn't populate the databases for me, given a different username and password
G
GreenGiant

If there is no database with the same name as the username, then clicking "Choose Database" will fail with an error like "Status : Failure -FATAL: database "your_username" does not exist"

To work around this, put 5432/database_name? in the Port field, where 5432 is the port of your Postgres instance and database_name is the name of at an existing database that your_username has access to. Then click "Choose Database" again and it should work. Now you can choose the database you want and remove the extra /database_name? from the Port field.


a
a_horse_with_no_name

Oracle SQL Developer 2020-02 support PostgreSQL, but it is just the basics by adding postgreSQL driver under jdbc dir and configure by adding as a 3rd party driver.

The supported functionality:

multiple databases which can be selected at connection definition

CRUD operations like query tables

scheme operations

basic modelling support: show tables without pk, fk, connections

Not supported functionalities:

no table or field completion

no indexes are shown in a tab

no constraints are shown in a tab like: fk, pk-s, unique, or others

no table or field completions in the editor

no functions, packages,triggers, views are shown

The sad thing is Oracle should only change the queries behind this view in case of PostgreSql connections. For example for indexes they need to use this query: select * from pg_catalog.pg_indexes;


M
Mike Liu

Except that it will not work if your user name and database name are differents. It sounds like an SQLDeveloper bug and i can't find any workaroud

Maybe there are some bugs in Oracle SQL Developer when it connect to the postgresql.However I connect postgresql with navicat successfully.(My postgresql username and database name are different


Solution:If you have different user name and database name, one should specify in hostname: hostname/database? (do not forget ?) or hostname:port/database?.
How is "when I use Navicat" a solution to the problem "it doesn't properly work with SQL Developer"?