磨砺技术珠矶,践行数据之道,追求卓越价值
回到上一级页面: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有冲突。

查阅文档,解决方法是-----换版本!

http://postgresql.1045698.n5.nabble.com/Compile-error-08-04-0200-with-unix-odbc-2-2-14p2-1-on-Debian-Squeeze-AMD64-td3244665.html

所以,下载  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数据库的更多相关文章

  1. C#访问postgresql数据库

    最近开始做C#的DotNet的工作,因为对PostgreSQL数据库比较有兴趣,所以自己研究了一下如何访问PostgreSQL的 数据库的问题. 1.为了访问PostgreSQL数据库,需要从pgfo ...

  2. C/C++访问PostgreSQL数据库

    编号:1011时间:2016年5月17日09:46:01功能:Windows环境下C/C++访问PostgreSQL数据库https://segmentfault.com/a/119000000062 ...

  3. Postgresql ODBC驱动,用sqlserver添加dblink跨库访问postgresql数据库

    在同样是SQLserver数据库跨库访问时,只需要以下方法 declare @rowcount int set @rowcount =(select COUNT(*) from sys.servers ...

  4. C#访问PostGreSQL数据库的方法 http://www.jb51.net/article/35643.htm

    这次的项目中的一个环节要求我把PostGreSQL数据取出来,然后放到SqlServer里,再去处理分析. http://www.jb51.net/article/35643.htm - 我对Post ...

  5. C# 应用 - 封装类访问 Postgresql 数据库

    引入库类 连接数据库 访问数据库 1)增删改数据库 2)查数据库 数据转换 事务 1. 引入库类 引入 Npgsql.dll using Npgsql; using NpgsqlTypes; 2. 连 ...

  6. 使用libpqxx访问PostgreSQL数据库(mingw编译libpqxx)

    编译前准备    1. 安装mingw 安装mingw(不管是直接安装mingw还是其他如code::blocks附带安装的mingw),输入:gcc -v可显示如下图的版本信息,我的版本是mingw ...

  7. 将gitlab中的postgresql数据库开通远程访问

    postgresql数据库是gitlab的一个配置数据库,记录gitlab的一些配置信息. 我们访问gitlab中的postgresql数据有本地命令行访问和远程可视化软件访问2种方式. (一)本地命 ...

  8. PostgreSQL数据库中跨库访问解决方案

    PostgreSQL跨库访问有3种方法:Schema,dblink,postgres_fdw. 方法A:在PG上建立不同SCHEMA,将数据和存储过程分别放到不同的schema上,经过权限管理后进行访 ...

  9. 怎样从外网访问内网PostgreSQL数据库?

    本地安装了一个PostgreSQL数据库,只能在局域网内访问到,怎样从外网也能访问到本地的PostgreSQL数据库呢?本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动PostgreSQ ...

随机推荐

  1. BZOJ1369:[Baltic2003]Gem(树形DP)

    Description 给出一棵树,要求你为树上的结点标上权值,权值可以是任意的正整数 唯一的限制条件是相临的两个结点不能标上相同的权值,要求一种方案,使得整棵树的总价值最小. Input 先给出一个 ...

  2. BZOJ2223/3524:[POI2014] Couriers(主席树)

    Description 给一个长度为n的序列a.1≤a[i]≤n. m组询问,每次询问一个区间[l,r],是否存在一个数在[l,r]中出现的次数大于(r-l+1)/2.如果存在,输出这个数,否则输出0 ...

  3. 【[JSOI2007]建筑抢修】

    各种瞎写 之后也不知道为什么就过了 刚看到这道题感觉确实是不会的,因为我贪心太差了\(QAQ\) 之后就随便\(yy\)呗 发现首先我们得排一下序,以\(t2\)也就是建筑的损坏时间为第一关键字从小到 ...

  4. HTTP 错误 401.0 - Unauthorized 的解决方案

    1.安装vs2015后,以前做的项目中Forms身份验证,竟然不能使用了 2.打开当前项目属性,将windows身份验证属性改为启用 3.vs2015生成的mvc项目中,webconfig缺失auth ...

  5. JS页面刷新

    setTimeout('location.reload()',1000);//页面刷新 1000为延时的毫秒数 1.setInterval() - 间隔指定的毫秒数不停地执行指定的代码.   2.se ...

  6. unittest 测试

    unittest 测试 单元测试是用来对一个模块.一个函数或者一个类来进行正确性检验的测试工作. 比如对函数abs(),我们可以编写出以下几个测试用例: 输入正数,比如1.1.2.0.99,期待返回值 ...

  7. PAT——1052. 卖个萌

    萌萌哒表情符号通常由“手”.“眼”.“口”三个主要部分组成.简单起见,我们假设一个表情符号是按下列格式输出的: [左手]([左眼][口][右眼])[右手] 现给出可选用的符号集合,请你按用户的要求输出 ...

  8. PAT——1030. 完美数列

    给定一个正整数数列,和正整数p,设这个数列中的最大值是M,最小值是m,如果M <= m * p,则称这个数列是完美数列. 现在给定参数p和一些正整数,请你从中选择尽可能多的数构成一个完美数列. ...

  9. vlc源码分析(六) 调用OpenMAX硬解码H.265

    H.265(HEVC)编码格式能够在得到相同编码质量视频的前提下,使用相当于H.264(AVC)一半的存储容量,虽然H.265的算法复杂度比H.264高一个数量级,但是硬件水平在不断提高,因此H.26 ...

  10. flink Window的Timestamps/Watermarks和allowedLateness的区别

    Watermartks是通过additional的时间戳来控制窗口激活的时间,allowedLateness来控制窗口的销毁时间.   注: 因为此特性包括官方文档在1.3-1.5版本均未做改变,所以 ...