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】要格外注意。

相关文章
相关标签/搜索