PostgreSQL is an open-source object-relational database used for many web and analytics applications. Oracle is a leading enterprise relational database known for advanced features and performance. Many organizations opt to migrate PostgreSQL to Oracle to leverage Oracle’s advanced features and robust performance capabilities.

This article outlines two easy steps to connect PostgreSQL to Oracle, enabling you to access data across both databases. By establishing this integration, you can migrate PostgreSQL data to Oracle while retaining live access from applications.

Understanding PostgreSQL to Oracle Migration Steps

Postgres to Oracle migration involves transferring data, schemas, and stored procedures. Here are the steps involved in moving data from PostgreSQL to Oracle:

PostgreSQL to Oracle Migration: PostgreSQL Export to CSV

  • You can export data from a PostgreSQL table to a CSV file by using the COPY statement. For instance, if you want to export the data of the ‘persons’ table to a CSV file called persons_db.csv within the C:tmp folder, you can leverage the following statement:
COPY persons TO 'C:tmppersons_db.csv' DELIMITER ',' CSV HEADER;
  • PostgreSQL will export all the data from all columns of the ‘persons’ table into the persons_db.csv file.
  • In a couple of cases, you might want to export data from just a few columns of a table to a CSV file. To execute this, you need to specify the column names together with the table name followed by the COPY keyword. For instance, the following statement will export data from the last_name, first_name, and email columns of the ‘persons’ table to person_partial_db.csv.
COPY persons(first_name,last_name,email)
TO 'C:tmppersons_partial_db.csv' DELIMITER ',' CSV HEADER;
  • If you don’t want to export the header that contains the column names for the table, you can simply remove the HEADER flag in the COPY statement. The following statement will only export the data from the email column of the ‘persons’ table to a CSV file.
COPY persons(email)
TO 'C:tmppersons_email_db.csv' DELIMITER ',' CSV;
  • A point to note for the PostgreSQL to Oracle migration is that the CSV file name that you mention in the COPY command needs to be written directly to the server. This means that the CSV file needs to reside on the database server machine, as opposed to your local machine. The CSV file also needs to be writable by the user that the PostgreSQL server runs as. 

PostgreSQL to Oracle Migration: Export CSV Data to Oracle

  • First, you need to decide the Oracle table you wish to use for the PostgreSQL to Oracle migration. If the PostgreSQL to Oracle migration is carried out on a new table, you can scroll to the Database menu, and click on Import Data. On the other hand, for an existing table, you can scroll to the Database Explorer, right-click a table, and choose Import Data on the shortcut menu for PostgreSQL to Oracle Migration.
  • The Data Import wizard will open up with the predefined parameters: an Oracle connection, a table to import the data to, and a database.
  • Next, in the Data Import Wizard, you can select a CSV import format, mention the location of the Source data, and click Next. Once you’re on the Data Import window, go to the Destination tab, mention the Oracle connection, choose the database and table to import the data to, and then click on Next.
  • On the Data Import > Options tab, you can set the PostgreSQL to Oracle migration options for the file format you’ve chosen and then click on Next to execute the following:
    • You can select the line number where the table header is located. This will be highlighted in blue within the Preview section. If you don’t mention the header position, the imported columns will get default names- column1, column2, etc.
    • You can also set the number of lines to skip during the PostgreSQL to Oracle migration. These lines will be counted from the top.
    • You can even specify a column delimiter, the result of which can be viewed in the Preview section.
PostgreSQL to Oracle: Data Import Options
  • Next, you need to scroll to the Data Import > Data Formats tab, wherein you can specify the data formats for the Source data, and then click on Next.
  • You can then map the columns to the Target Table columns in the Data Import > Mapping tab.
  • If you wish to cancel the mapping of all the columns, you can simply click on Clear Mappings on the toolbar. To restore the mapping of columns, you just need to click on Fill Mapping.
PostgreSQL to Oracle: Data Import Mapping
  • If you are importing data to a new table, you can modify the Target column properties by double-clicking them in the top grid. Next, you need to select the Key check box for a column that contains a primary key and then click on Next.
  • Next, you can pick an import mode for the data from the Data Import > Modes tab, and then click on Next.
  • You can select one of the following PostgreSQL to Oracle migration options from the Data Import > Output tab, to manage the data import script, and then click on Next:
    • Open up the data import script in the internal editor
    • You can then save the data import script to a file
    • Finally, you can import data directly to the database
  • You need to decide how to handle the errors during import on the Data Import > Errors Handling tab, and mention if you want to get a log file with details about the import session.
  • To begin PostgreSQL to Oracle migration, you simply need to click on Import and look at the import progress. Finally, you can click on Finish to close the import wizard and complete the PostgreSQL to Oracle migration. 

Limitations and Challenges of Using Custom Code Method

  • File and Record Size Constraints: Oracle systems limit data file imports to 50,000 records per file via UI or REST services, requiring splitting or using EDLC for larger datasets.
  • Manual Data Management: Handling relationships between CSV files manually risks errors and compromises data integrity, especially with multiple related tables.
  • Exporting Large Data Sets: Managing Oracle tables with millions of records involves writing complex SQL queries and exporting data in chunks, which is time-consuming.
  • Data Type and Format Issues: Exporting complex data types like objects or multivalued fields requires careful attention to formatting and data types in CSV exports.
  • Performance Impact: Exporting large data volumes can strain Oracle database performance, consuming significant resources and potentially impacting other operations.
  • Error Handling: Manual exports are prone to errors, necessitating manual intervention and complicating the export process.
  • User Feedback and System Limitations: Users request higher export limits due to critical issues for businesses needing detailed, extended data extraction.

Additional Resources for PostgreSQL Integrations and Migrations


This article illustrates the steps you can follow to set up a connection from PostgreSQL to Oracle in a seamless fashion. For this method, you’ll first be moving your data from a PostgreSQL table to a CSV file, which will then be exported to Oracle.

Hevo also supports PostgreSQL as a destination for various use cases.

Content Marketing Manager, Hevo Data

Amit is a Content Marketing Manager at Hevo Data. He is passionate about writing for SaaS products and modern data platforms. His portfolio of more than 200 articles shows his extraordinary talent for crafting engaging content that clearly conveys the advantages and complexity of cutting-edge data technologies. Amit’s extensive knowledge of the SaaS market and modern data solutions enables him to write insightful and informative pieces that engage and educate audiences, making him a thought leader in the sector.

No-code Data Pipeline for PostgreSQL and Oracle