SSIS中PostgreSQL ODBC连接器无法返回输入列问题求助
解决SSIS ODBC源组件无法加载列菜单的问题
问题概况
- 环境:PostgreSQL 15.0、SSIS 2022、psqlodbc_15_00_0000-x64(含32位版本)、AWS Linux EC2服务器
- 现象:ODBC源组件可查看PostgreSQL表、预览数据,但点击列菜单无内容返回,无法保存数据源
- 补充:ADO.NET连接正常但速度极慢;此前同服务器MySQL数据库出现同类问题,怀疑目录相关
可行解决方案
1. 修正ODBC驱动的架构映射配置
PostgreSQL ODBC驱动默认可能无法正确识别表所在架构,尤其是表不在public架构下时:
- 打开ODBC数据源管理器,找到对应PostgreSQL DSN进入配置页
- 在Connection标签手动填写
Default Schema为表所在架构(如public) - 切换到Advanced标签,取消勾选
Use Declare/Fetch和Use Server Side Prepare选项(部分驱动版本这两个设置会导致元数据加载异常) - 保存配置后重启SSIS设计器测试
2. 用SQL命令替代可视化列选择
绕过列菜单加载问题,直接在ODBC源组件的SQL命令模式下编写查询语句:
SELECT column1, column2, column3 FROM your_schema.your_table;
点击解析确认语句有效后,即可保存数据源并正常配置列映射。
3. 匹配SSIS运行模式与驱动位数
SSIS设计器默认运行模式可能与驱动位数不兼容:
- 打开项目属性的Debugging选项卡
- 将
Run64BitRuntime设为True(对应64位驱动)或False(对应32位驱动) - 重启SSIS设计器后重新测试
4. 赋予数据库用户系统表读取权限
确保ODBC连接用户能读取PostgreSQL系统表,否则无法加载列元数据:
GRANT USAGE ON SCHEMA information_schema TO your_db_user; GRANT SELECT ON ALL TABLES IN SCHEMA information_schema TO your_db_user; GRANT USAGE ON SCHEMA pg_catalog TO your_db_user; GRANT SELECT ON ALL TABLES IN SCHEMA pg_catalog TO your_db_user;
执行权限赋予后重新连接测试。
5. 更换稳定版ODBC驱动
尝试降级驱动版本,比如使用psqlodbc_14.x系列(PostgreSQL 15兼容14版驱动),避免使用最新测试版。安装时严格匹配SSIS运行模式的位数(32/64位)。
内容的提问来源于stack exchange,提问作者Andrey Hartung
相关产品推荐
相关产品推荐

