There is a great blog post on Connecting to a PostgreSQL Instance Using SQL Server Integration Services which you’ll want to read. I will recap the steps directly from this post:
Installation of both drivers (32-bit & 64-bit) is identical. Here are the basic steps to get the driver working:
- Download the latest .msi file for Windows from this location: http://www.postgresql.org/ftp/odbc/versions/msi/
- Run the msi file on your SQL Server.
- Launch the ODBC Administrator Utility and choose the type of data source you need; File, System or User and click Add.
- The ODBC Administrator will present a list of drivers. Scroll to the bottom and you will see two options for PostreSQL; ANSI and Unicode. Select the version you need and click Finish.
- The Administrator will present a screen on which you must supply a database name, server name, user name and password.
- After you have supplied values for these fields, click the Datasource button and make sure the Use Declare/Fetch box is checked. The driver will fail to retrieve larger datasets if you do not check this box. I have not yet found a satisfactory answer for why this is so.
Now you are ready to build a new connection manager in SSIS and hook it to the PostGRES data source you just created. Use the following settings when building out the connection manager:
- Select the .Net ProvidersODBC Data Provider.
- Select the “Use connection string” radio button. Using the values you configured in the ODBC Administrator, build a connection string as follows: Dsn=PostgreSQL35W;uid=User1
- Enter the User name and Password in the fields provided.
- Test the connection and you should be ready to go.
Here are a few bits of information I’d like to add to this excellent blog post, mainly for my own purposes should I run into this again:
I noticed on the PostgreSQL msi page that there were several versions of the drivers. I took the most recent of the 32bit, psqlodbc_09_01_0100-1.zip. The 64 bit drivers have “64 bit” in the name.
The 32-bit ODBC drivers for PostgreSQL get installed here C:Program Files (x86)psqlODBC
After installing the 32 bit driver per the instructions, in your Visual Studio solution be sure to change your Project Properties – Debugging – Run64BitRuntime property to False. This will force it to run in 32-bit mode.
If you are triggering your package from SQL Server Agent, set the SQL Server Agent job to run in 32-bit mode
For SQL2012, be sure to put the password in a Project Parameter so it is retained in the package on deployment to Integration Services, and doesn’t get stripped out due to package protection.