文档章节

ubuntu下ODBC访问mssql和sybase(perl&python)

wangxuwei
 wangxuwei
发布于 2016/03/01 09:52
字数 434
阅读 80
收藏 0

一、安装freetds

参考http://my.oschina.net/u/2245781/blog/626203

二、安装unixodbc

sudo  apt-get install unixodbc unixodbc-bin unixodbc-dev

三、获取DBD-ODBC

wget  http://www.cpan.org/authors/id/M/MJ/MJEVANS/DBD-ODBC-1.52.tar.gz

四、安装

tar xzvf DBD-ODBC-1.52.tar.gz 

 cd DBD-ODBC-1.52/

 perl Makefile.PL -o /usr

make&sudo make install

五、配置(freetds已配置好

/etc/odbcinst.ini加上

# setup from FreeTDS package
[FREETDS]
Description     = ODBC of FreeTDS for MS SQL 2000
Driver          = /opt/local/freetds/lib/libtdsodbc.so
Setup          	= /opt/local/freetds/lib/libtdsodbc.so
Trace 		=	Yes
TraceFile	=/opt/local/freetds/odbcinst.log
UsageCount	= 1

/etc/odbc.ini加上

[mysql]
Driver		= /opt/local/mysql-connector/lib/libmyodbc3_r.so
SETUP		= /opt/local/mysql-connector/lib/libmyodbc3_r.so 
UsageCount	= 1

六、测试

perl的dbi数据访问odbc读取sqlserver数据被截断的问题(http://www.lai18.com/content/683266.html),需在perl代码加上

$dbh->{LongTruncOk}=1; 

$dbh->{LongReadLen} = 1048576*1024;

#!/usr/bin/perl
 
use DBI;

 
$dbname="mymotif";
$user="mymotif";
$passwd="wxwpxh";
 

#mssql 字串对应于 /etc/odbc.ini 里面的 [mssql] 
$dsn = "DBI:ODBC:mssql";
  
 
$dbh = DBI->connect($dsn,$user,$passwd) or die "can't connect to database : $DBI::errstr";
$dbh->{LongTruncOk}=1; 
$dbh->{LongReadLen} = 1048576*1024;

$sth=$dbh->prepare("select * from STUDENT");
$sth->execute;
while (@recs=$sth->fetchrow_array) {
print $recs[0].":".$recs[1].":".$recs[2]."\n";
}
$dbh->disconnect;

七、sybase

odbc配置:/etc/odbcinst.ini不变

/etc/odbc.ini加上

[sybase]
Description	= Sybase SQL Server
Driver		= FREETDS
Servername	= egServer50
Database	= testdb

如果环境变量TDSVER的值不是5.0,则需要在perl代码中设置如下:

#!/usr/bin/perl

use DBI;
use DBD::ODBC; 


$user="mymotif";
$passwd="wxwpxh";
$ENV{TDSVER} = "5.0";

#sybase 字串对应于 /etc/odbc.ini 里面的 [DSN] 
$dsn = "DBI:ODBC:sybase";
 

$dbh = DBI->connect($dsn,$user,$passwd) or die "can't connect to database : $DBI::errstr";

$sth=$dbh->prepare("select * from STUDENT");
$sth->execute;

$sth->{'LongTruncOk'} = 1;
while (@recs=$sth->fetchrow_array) {
	print $recs[0].":".$recs[1].":".$recs[2]."\n";
}
$dbh->disconnect;

而在python代码中设置如下

#coding=utf-8
import pyodbc
import os
os.environ["TDSVER"]="5.0"

conn =  pyodbc.connect("DSN=sybase;UID=mymotif;PWD=wxwpxh")
cur = conn.cursor() 			
cur.execute("select * from STUDENT")
info = cur.fetchall() 
print len(info)   	#获得表中有多少条数据
for ii in info:
    print ii[0]+' '+ii[1]+' '+ii[2]+' '+ii[3].strftime('%Y-%m-%d')+' '+ii[4]	
cur.close()
conn.commit()
conn.close()


© 著作权归作者所有

wangxuwei
粉丝 27
博文 339
码字总数 120192
作品 0
杭州
其他
私信 提问
JDBC驱动下载及各种数据库的连接字符串URL写法

各种数据库的JDBC驱动下载及连接字符串URL写法 sun官方网站上的JDBC驱动列表:http://java.sun.com/products/jdbc/reference/industrysupport/index.html 数 据 库 说 明 MySQL http://www.m...

余路
2012/05/03
0
0
postgresql 使用odbc_fdw连接 sqlserver

安装配置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......

dubox
2018/09/20
0
0
用Python访问SqlServer

经常用Python写demo来验证方案的可行性,最近遇到了Python访问SqlServer的问题,这里总结下。 一、Windows下配置Python访问Sqlserver 环境:Windows 7 + Sqlserver 2008 1、下载并安装pyodb...

长平狐
2012/06/08
4.8K
0
为Python编程三步配好Linux上的FreeTDS

在Linux中,如果要使用ODBC并连到MS SQLServer,我们需要为Linux操作系统安装并配置好UnixODBC模块。很多教程中的操作步骤比较复杂,我将其中关键步骤精简到三步: 本教程以刚刚安装好的Ubunt...

派派技术小组
2013/02/12
0
0
sqlserver2008 odbc

我们的一个产品用到的环境分别是windows server 2008 ,sqlserver 2008产品通过数据源进行连接数据库,这里前提是sqlserver可以正常登陆,是用。产品在安装过程中,也可以向sqlserver中新建表...

深谷不见幽兰
2014/12/11
143
0

没有更多内容

加载失败,请刷新页面

加载更多

任务调度-第三方库Quartz实现分布式任务管理与调度

1. 为什么要用第三方库Quartz来实现分布式任务管理和调度? 首先管理的目的是通过集群多节点的管理提供容错,调度的目的是保证同一任务只会被完整执行一次;之前分享过的任务调度-单体应用定...

秋日芒草
5分钟前
0
0
Mysql Explain Type

前言 当我们执行sql,一般都会用Explain来查看sql的效率如何。今天在看sql执行效率的时候,忘记了其中Type的意思,现在在此记录一下。 效率 这里的type指的是访问类型,各个效率高低如下: ...

无敌小杰杰
14分钟前
0
0
外部浏览器网页复制公众号无法自动唤起微信并关注怎么办?

现在有很多用户在外部浏览器网页复制公众号时无法自动唤起微信并关注,这是因为第三方浏览器打开微信的接口,微信只给部分合作平台开放了接口权限,任何第三方想调用只能是通过一些技术手段来...

qjniop
18分钟前
0
0
建造者模式

建造者模式(Builder Pattern) 也叫生成器模式,其定义如下: Separate the construction of a complex object from its representation so that the same construction process can create d......

无知的小狼
23分钟前
0
0
距离计算方法

1、欧式距离(欧几里得距离) 欧式距离是最易理解的距离定义,即各坐标点的坐标之差的平方和相加,然后开根号。 二维平面上点 与点 之间的距离公式是: n维空间上点 和点 之间的距离公式是:...

城北徐公美
25分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部