2019独角兽企业重金招聘Python工程师标准>>>

安装配置odbc_fdw

1.安装unixODBC

apt-get install unixodbc unixodbc-dev

2.安装 Microsoft ODBC Driver 17 for SQL Server

curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
apt-get update
apt-get install msodbcsql17 mssql-tools

如果遇到: W: GPG error: http://security.ubuntu.com trusty-security Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 40976EAF437D05B5
**解决办法:**apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 40976EAF437D05B5

参考:docs.microsoft.com

3.配置ODBC

a.配置驱动

vi /etc/odbcinst.ini
#加入以下内容:
[SQLServer17] #驱动名
Description=Microsoft ODBC Driver 17 for SQL Server
Driver=/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.2.so.0.1
UsageCount=1

b.配置dsn,这一步并不是必须的 后面会说到

vi /etc/odbc.ini
#加入以下内容:
[erp-test] #dsn 名称
Description = erp sqlserver test
Trace = On
TraceFile = stderr
Driver = SQLServer17 #驱动名称,需和odbcinst.ini中的名称一致
Server = 192.168.1.123
PORT = 1433
encoding = UTF8

4.安装 odbc_fdw

apt-get install postgresql-server-dev-10
wget https://github.com/CartoDB/odbc_fdw/archive/0.3.0.tar.gz
make
make install

登录 pg 执行:
CREATE EXTENSION odbc_fdw; #添加扩展
再执行
\dx
如果看到:

表示添加成功
参考:https://github.com/CartoDB/odbc_fdw


odbc_fdw的使用


#--扩展的添加是基于数据库(database)的,即 切换数据库就需要重新添加
CREATE EXTENSION odbc_fdw;#-- 使用 odbc.ini 中配置的 dsn 创建server, 谁创建归属谁
CREATE SERVER erp_sqlserverFOREIGN DATA WRAPPER odbc_fdwOPTIONS (dsn 'erp-test' #--需要和odbc.ini中 dsn 名称一致);#--也可以不使用 dsn ,创建 server
CREATE SERVER erp_sqlserver2FOREIGN DATA WRAPPER odbc_fdwOPTIONS (odbc_DRIVER 'SQLServer17',odbc_SERVER '192.168.1.123',odbc_port '1433');#--给其他用户授予 server 使用权限
GRANT USAGE ON FOREIGN SERVER erp_sqlserver to erp_manager; #--创建用户和 server 之间的映射关系
CREATE USER MAPPING FOR erp_managerSERVER erp_sqlserverOPTIONS ( "odbc_UID" 'admin', "odbc_PWD" '123456');#--导入外部数据库的 schema,可以将外部库指定schema中的全部或部分表一次导入到 pg 中指定的schema
IMPORT FOREIGN SCHEMA dboLIMIT TO (table1 ,table2)  #指定需要导入的表,可选, 默认导入所有FROM SERVER erp_sqlserver INTO "erp_test"OPTIONS (odbc_DATABASE 'database-83336442_Test');#--创建外部表,可以指定字段,以及通过 sql 过滤数据,类似于视图
CREATE FOREIGN TABLE"public".test_gbk_20180916 (id integer,name varchar(255) )SERVER erp_sqlserverOPTIONS (odbc_DATABASE 'ddrobot',sql_query 'select id,name from `zt`.`test_gbk_20180916`',sql_count 'select count(id) from `zt`.`test_gbk_20180916`'#--encoding 'UTF8');        

OPTIONS 中的参数是 fdw扩展自己定义的,所以不同的扩展参数也是不同的,odbc_fdw 的参数解释可以参见: https://github.com/CartoDB/odbc_fdw


遇到的问题

ERROR: length for type varchar must be at least 1 LINE 1: ...imestamp, "CallBackCount" integer, "BusinessInfo" varchar(0)
出现这个是因为我的外部 sqlserver 库中有一些varchar字段的长度设为0(sqlserver我不太熟,难道是sqlserver在这块不严格?),这个错误信息提示也比较明白,就不多说了

--

SSL SYSCALL error: EOF detected
出现这个问题的原因没有搞清楚,这应该是一个笼统的错误信息,在网上看到出现这个错误的可能性比较多,最后我的解决办法是 更换 sqlserver odbc driver 到版本17 ,之前“apt-get install msodbcsql”这样安装的版本是13

--

ERROR: Connecting to driver
出现最多的就是这个问题了,驱动没有装好、驱动配置有问题、外部数据库本身的连接问题等都会报这个错,排查起来很苦恼。。。

开启 pg 日志

修改 pg 配置文件:
vi /etc/postgresql/10/main/postgresql.conf

#开启日志重定向到日志文件
logging_collector = on#日志目录,可以使用绝对路径或相对路径,使用相对路径时则是相对于变量‘PGDATA’代表的路径,在配置文件中搜索可以找到该路径
log_directory = 'pg_log'  #指定日志级别
log_min_messages = warning

转载于:https://my.oschina.net/u/2399303/blog/2093222

postgresql 使用odbc_fdw连接 sqlserver相关推荐

  1. java连接sql server数据库的代码如何改成连接mysql_连接sqlserver数据库代码

    Sql Server的JDBC测试程序与远程连接 参考文献: 1.MySql与oracle的JDBC测试程序 2.查看sqlserver的端口号 代码示例 在我的机器上安装了多个版本的sqlserve ...

  2. unix odbc php 连接sqlserver,Ubuntu下通过unixODBC连接MS SqlServer2005

    一.下载相关软件 unixODBC.freetds (1) Linux系统的ODBC      unixODBC-2.2.8.tar.gz ( http://www.unixodbc.org ) (2 ...

  3. php 5.4.36 sqlserver,PHP:PHP5.4连接SQLSERVER

    在PHP5.4的环境下要连接SQLSERVER(2005/2008)数据库,需要以下步骤: 1.下载PHP5.4连接SQLSERVER的驱动(两个动态连接库)http://www.microsoft. ...

  4. c语言 mysql_bind,C语言连接SQLSERVER数据库

    第一步:配置ODBC.在配置ODBC时有用户DSN.系统DSN.和文件DSN三种方法,为了稳妥起见,采用系统DSN. DSN的名字叫LocalServer,帐号:sa,密码123456 第二步:打开V ...

  5. PowerDesigner连接SqlServer数据库导出表结构

    原文:PowerDesigner连接SqlServer数据库导出表结构 环境:PowerDesigner15 数据库sql server 2005 第一步.打开PowerDesigner ,建立一个物 ...

  6. Java通过JDBC来连接SqlServer数据库

    Java通过JDBC来连接SqlServer数据库 0.       安装配置Java运行的环境,就不废话了 1.       下载JDBC的驱动程序http://msdn.microsoft.com ...

  7. Oracle使用dblink连接SqlServer

    使用场景:当你需要从Oracle数据库上访问另一台SqlServer数据库的数据时,Oracle提供了一个工具:gateways.通过这个工具,你可以创建dblink来连接sqlserver或其他不同 ...

  8. ASP.NET中新建MVC项目并连接SqlServer数据库实现增删改查

    场景 ASP.NET中MVC编程模式简介与搭建HelloWorld项目: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10679 ...

  9. ASP.NET中连接Sqlserver数据库时提示:未能加载文件或程序集“Microsoft.SqlServer.Management.Sdk.Sfc

    场景 在Visual Studio 2013中连接 SqlServer数据库时提示: 未能加载文件或程序集"Microsoft.SqlServer.Management.Sdk.Sfc 注: ...

最新文章

  1. HighLight selected features
  2. Win7 SP1 msado15 unresolved external symbol
  3. 什么是Web Worker?
  4. 模型训练慢和显存不够怎么办?GPU加速混合精度训练
  5. python中dir用法_Python dir() 函数
  6. 关于setInterval设置倒计时只执行一次,clearInterval停止
  7. 疯狂连连看之开发游戏界面组件
  8. python安装包下载及安装(超详细)
  9. C++ 合并两个有序链表
  10. Java--基于Java编写的数据库加解密工具包(附)GitHub源码
  11. 即将奔三的90后,你们有多少存款
  12. 如何优雅使用JDK8中的Stream对list集合中的某值求和
  13. 16、git删除暂存区文件
  14. WHQL认证(徽标认证)步骤介绍
  15. 谈task_struct
  16. 手写板行业调研报告 - 市场现状分析与发展前景预测
  17. python dataframe取一列_pandas取dataframe特定行/列
  18. 让Windows 2003支持红外线通信
  19. isqlplus 连接标识符 (奇怪的问题)--(解决)
  20. 妹妹,我要告诉你爸爸

热门文章

  1. 开发人员技能提升阅读书籍推荐
  2. 国内物联网产业仍处初级阶段 运营商NB-IoT大有可为
  3. Idea安装完成后打不开的问题
  4. SAP FICO模块-财务账期的打开和关闭
  5. 适合送女朋友的情人节礼物?畅销火热的好物分享
  6. Day3:现金流三拷问---投资环节
  7. iOS 设置按钮上图下文的方式
  8. 搭建DVWA出现错误:DVWA System error - config file not found.
  9. sdffdsfsdfdfssfsfsfsdfsdffds/sdfsDSFsd
  10. 如何解决百度云下载大文件限速问题