通过unixODBC访问PostgreSQL数据库
磨砺技术珠矶,践行数据之道,追求卓越价值
回到上一级页面:PostgreSQL基础知识与基本操作索引页 回到顶级页面:PostgreSQL索引页[作者 高健@博客园 luckyjackgao@gmail.com]
步骤1,先安装PostgreSQL
具体不详述,参考PostgreSQL的官方文档或下载、解压后的INSTALL文件中的指令即可
运行configure时指定安装目录:./configure --prefix=/usr/local/pgsql
我安装的是 PostgreSQL9.1.2
步骤2,再安装unixODBC
下载 unixODBC-2.3.1.tar.gz,以postgres 用户身份进行解压。
然后运行:./configure --prefix=/usr/local/unixodbc
然后 make
sudo make install
步骤3,再安装psqlodbc
一开始安装的是psqlodbc-09.01.0200.tar.gz,make的时候,发现和unixODBC有冲突。
查阅文档,解决方法是-----换版本!
所以,下载 psqlodbc-09.02.0100.tar.gz
以postgres用户身份解压缩,然后运行:
export LD_LIBRARY_PATH=/usr/local/unixodbc/lib:$LD_LIBRARY_PATH
./configure --prefix=/usr/local/psqlodbc --with-libpq=/usr/local/pgsql/ --with-unixodbc=/usr/local/pgsql/unixodbc/
再运行:
make
sudo make install
步骤4,配置unixODBC
[root@server etc]# pwd
/usr/local/unixodbc/etc
[root@server etc]# ls
ODBCDataSources odbc.ini odbcinst.ini
[root@server etc]# cat odbcinst.ini
[PostgreSQL]
Description=PostgreSQL driver for Linux
Driver=/usr/local/psqlodbc/lib/psqlodbcw.so
Setup=/usr/local/psqlodbc/lib/psqlodbcw.so
UsageCount=1 [root@server etc]# cat odbc.ini
[GaoTest]
Description=Test for Mr Gao
Driver=PostgreSQL
Trace=Yes
TraceFile=sql.log
Database=postgres
Servername=localhost
UserName=postgres
Password=postgres
Port=
Protocol=6.4
ReadOnly=No
RowVersioning=No
ShowSystemTables=No
ShowOidColumn=No
FakeOidIndex=No
ConnSettings=
[root@server etc]#
步骤5,验证
通过isql来验证是否可以连接到postgresql,
运行中通过strace跟踪发现,isql需要在几个目录中寻找libpq.so.5
open("/usr/local/unixodbc/lib/libpq.so.5", O_RDONLY) = - ENOENT (No such file or directory)
open("/usr/local/unixodbc/lib/libpq.so.5", O_RDONLY) = - ENOENT (No such file or directory)
open("/lib64/tls/x86_64/libpq.so.5", O_RDONLY) = - ENOENT (No such file or directory)
stat("/lib64/tls/x86_64", 0x7fff7fdcd0b0) = - ENOENT (No such file or directory)
open("/lib64/tls/libpq.so.5", O_RDONLY) = - ENOENT (No such file or directory)
stat("/lib64/tls", 0x7fff7fdcd0b0) = - ENOENT (No such file or directory)
open("/lib64/x86_64/libpq.so.5", O_RDONLY) = - ENOENT (No such file or directory)
stat("/lib64/x86_64", 0x7fff7fdcd0b0) = - ENOENT (No such file or directory)
open("/lib64/libpq.so.5", O_RDONLY) = - ENOENT (No such file or directory)
stat("/lib64", {st_mode=S_IFDIR|, st_size=, ...}) =
open("/usr/lib64/tls/x86_64/libpq.so.5", O_RDONLY) = - ENOENT (No such file or directory)
stat("/usr/lib64/tls/x86_64", 0x7fff7fdcd0b0) = - ENOENT (No such file or directory)
open("/usr/lib64/tls/libpq.so.5", O_RDONLY) = - ENOENT (No such file or directory)
stat("/usr/lib64/tls", {st_mode=S_IFDIR|, st_size=, ...}) =
open("/usr/lib64/x86_64/libpq.so.5", O_RDONLY) = - ENOENT (No such file or directory)
stat("/usr/lib64/x86_64", 0x7fff7fdcd0b0) = - ENOENT (No such file or directory)
open("/usr/lib64/libpq.so.5", O_RDONLY) = - ENOENT (No such file or directory)
stat("/usr/lib64", {st_mode=S_IFDIR|, st_size=, ...}) =
于是在lib64目录下建立到 libpq.so.5的链接:
[root@server lib64]# pwd
/lib64
[root@server lib64]# [root@server lib64]# ls -lrt libpq.so.
lrwxrwxrwx root root 9月 : libpq.so. -> /usr/local/pgsql/lib/libpq.so.
然后再次运行isql:
[root@server etc]# cd /usr/local/unixodbc/bin
[root@server bin]# ./isql -v GaoTest
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL> quit
[root@server bin]#
[作者 高健@博客园 luckyjackgao@gmail.com]
回到上一级页面:PostgreSQL基础知识与基本操作索引页 回到顶级页面:PostgreSQL索引页磨砺技术珠矶,践行数据之道,追求卓越价值
通过unixODBC访问PostgreSQL数据库的更多相关文章
- C#访问postgresql数据库
最近开始做C#的DotNet的工作,因为对PostgreSQL数据库比较有兴趣,所以自己研究了一下如何访问PostgreSQL的 数据库的问题. 1.为了访问PostgreSQL数据库,需要从pgfo ...
- C/C++访问PostgreSQL数据库
编号:1011时间:2016年5月17日09:46:01功能:Windows环境下C/C++访问PostgreSQL数据库https://segmentfault.com/a/119000000062 ...
- Postgresql ODBC驱动,用sqlserver添加dblink跨库访问postgresql数据库
在同样是SQLserver数据库跨库访问时,只需要以下方法 declare @rowcount int set @rowcount =(select COUNT(*) from sys.servers ...
- C#访问PostGreSQL数据库的方法 http://www.jb51.net/article/35643.htm
这次的项目中的一个环节要求我把PostGreSQL数据取出来,然后放到SqlServer里,再去处理分析. http://www.jb51.net/article/35643.htm - 我对Post ...
- C# 应用 - 封装类访问 Postgresql 数据库
引入库类 连接数据库 访问数据库 1)增删改数据库 2)查数据库 数据转换 事务 1. 引入库类 引入 Npgsql.dll using Npgsql; using NpgsqlTypes; 2. 连 ...
- 使用libpqxx访问PostgreSQL数据库(mingw编译libpqxx)
编译前准备 1. 安装mingw 安装mingw(不管是直接安装mingw还是其他如code::blocks附带安装的mingw),输入:gcc -v可显示如下图的版本信息,我的版本是mingw ...
- 将gitlab中的postgresql数据库开通远程访问
postgresql数据库是gitlab的一个配置数据库,记录gitlab的一些配置信息. 我们访问gitlab中的postgresql数据有本地命令行访问和远程可视化软件访问2种方式. (一)本地命 ...
- PostgreSQL数据库中跨库访问解决方案
PostgreSQL跨库访问有3种方法:Schema,dblink,postgres_fdw. 方法A:在PG上建立不同SCHEMA,将数据和存储过程分别放到不同的schema上,经过权限管理后进行访 ...
- 怎样从外网访问内网PostgreSQL数据库?
本地安装了一个PostgreSQL数据库,只能在局域网内访问到,怎样从外网也能访问到本地的PostgreSQL数据库呢?本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动PostgreSQ ...
随机推荐
- android--eclipse闪退,无法启动
解决方法: 删除文件:[workspace]/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi
- 打包工具的核心原理(转自:https://juejin.im/entry/5b223ebd518825748b569bda)
打包工具就是负责把一些分散的小模块,按照一定的规则整合成一个大模块的工具.与此同时,打包工具也会处理好模块之间的依赖关系,最终这个大模块将可以被运行在合适的平台中. 打包工具会从一个入口文件开始,分析 ...
- BZOJ 1059 矩阵游戏 二分图匹配
题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1059 题目大意: 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏 ...
- Dockerfile.md
Docker 使用 前提条件 Docker目前只能在64位CPU架构的计算机上运行(目前只能是x86_64 .amd64). Linux 3.8 或 更高版本的内核.3.8之前的版本也能运行,但效果不 ...
- oc js 调用 函数调用栈
//定义需要暴露给js的内容,这里我们只暴露personName和queryPersonName接口 @protocol PersonProtocol <JSExport> @proper ...
- 【[CQOI2015]选数】
这道题自然是可以反演的 按照反演的套路我们先设出两个函数 \(F(n)\)表示从\([L,H]\)中任选\(N\)个数的最大公约数是\(n\)或者\(n\)的倍数的情况数 \(f(n)\)表示从\([ ...
- Owin+ASP.NET Identity浅析系列(三)框架结构分析
在今天,读书有时是件“麻烦”事.它需要你付出时间,付出精力,还要付出一份心境.--仅以<Owin+ASP.NET Identity浅析系列>来祭奠那逝去的…… 前两篇博客仅仅说了下功能如何 ...
- SpringMVC如何解决POST请求中文乱码问题,GET的又如何处理呢?
在web.xml中 <filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-c ...
- HDU 1058(打表)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1058 Humble Numbers Time Limit: 2000/1000 MS (Java/O ...
- 404 Note Found队-Alpha3
目录 组员情况 组员1(组长):胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:凯琳 组员6:丹丹 组员7:家伟 组员8:政演 组员9:鸿杰 组员10:刘一好 组员11:何宇恒 展示组内最 ...