SSIS2012鏈接 PostgreSQL數據庫

場景: 
   公司業務數據庫位於window R2  64位  +sqlserver2012數據庫,須要用ETL工具(SSIS2012)將數據抽取到window R2 64位+postgres 9.6 數據庫中
1. SSIS2012 鏈接 PostgreSQL數據庫 兩種方法:  .NET Provider for OleDB 和ODBC  ,第一種同事是花錢從老外那邊買的插件(若是有朋友有免費的鏈接適配器,求分享!) 下圖爲第一種 。 咱們這裏介紹第二種方式。sql

 

window10 +postgres9.6 ,安裝postgres的ODBC驅動數據庫

2. 下載PostgreSQL的ODBC鏈接驅動程序。 本人下載了PostgreSQL 09 02 64位和32位的,根據本身的具體狀況使用。
    http://www.postgresql.org/ftp/odbc/versions/msi/  服務器

 

3.安裝 ODBC鏈接驅動程序:解壓PostgreSQL 09 02 64-》雙擊psqlodbc.msi-》默認安裝便可(本人機器上安裝64位的驅動)
4.配置驅動管理  編輯器

 (1)win+R運行   64 位元 ODBC 位置:C:\Windows\System32\odbcad32.exeide

若是你的系統是 「64位元的操做系統」可是程序是「32位元」,雖然設置的方法同樣,可是是要開啓 C:\Windows\SysWOW64\odbcad32.exe 來設置「32位元的ODBC」,因爲 32/64 ODBC設置的路徑不同,默認的路徑是設置「64位元的ODBC」,因此要注意這一點,而且也要注意 ODBC Driver 的版本。工具

  64 位元 ODBC 位置:C:\Windows\System32\odbcad32.exesqlserver

  32 位元 ODBC 位置:C:\Windows\SysWOW64\odbcad32.exepost

 (2)添加用戶DNS測試

添加PostgreSQL ANSI(X64)操作系統

 

 填寫信息, 保存

 

用戶DNS中就出現咱們添加的postgres 64位

 

5.而後用 SSIS來鏈接。

(1)新建鏈接,選擇ADO.NET

 (2)提供程序選擇Odbc Data Provider

 (3)用戶名選擇PosgresSQL30,輸入用戶名,密碼,測試成功

 

 

 

報錯1:若報錯, 「驅動程序和應用程序體系結構不匹配」

解決辦法:

用上述方法,配置用戶DNS 32位驅動便可。

 

報錯2:鏈接管理器報錯,沒法顯示錶的信息

臨時解決辦法

對應組件-》右鍵-》高級編輯器-》TableOrViewName直接填寫

 

報錯3:沒有用於主機 "10.99.246.52", 用戶 "postgres", 數據庫 "postgres", SSL 關閉 的 pg_hba.conf 記錄".

解決辦法:

這是由於postgresql默認不容許遠程鏈接,必須在配置中打開. 

    打開$POSTSQL/data/pg_hda.conf 找到

    # IPv4 local connections:

    host    all             all             127.0.0.1/32            md5

    在下面添加兩行代碼:

host    all             all             10.100.50.132/24           md5--本身的主機ip
host    all             all             10.99.246.52/24           md5--部署到遠程的服務器ip

再把ODBC源中server 127.0.0.1改成10.100.50.132保存便可

報錯4:ssis在遠程服務器上報錯:沒有權限和ADO.NET源

解決辦法:

在遠程服務器上建立pg服務器ip 的ODBC源

pg的配置文件中鏈接字符串以下:

  數據源:string connectionString = "DSN=PostgreSQL35W;UID=postgres;PWD=******;";
  驅動:string connString = "Driver={PostgreSQL Unicode(x64)};Server=localhost;Database=MyDataBase;UID=postgres;PWD=******;Port=5432;";

PS:odbc要注意計算機是32位仍是64位,最好根據計算機來安裝相應的驅動。應用程序也要指定成相應的位數。不然,就須要額外去配置和加載。另外,數據源的名稱【DSN】和驅動【Driver】要格外注意。

相關文章
相關標籤/搜索