linuxのperl から windowsのSQLServerにアクセスする方法
http://www.augustus.to/blog/3128/archives/000046.html
http://www.augustus.to/blog/3128/archives/000047.html
http://www.datadirect.co.jp/SupportLink/dev_center/odbc/topics/perl
↑を参考に「DBD::ODBC」を使って接続できるようにしようとしました。
DBIが入ってるかどうかは
perl -MDBI
(↑返答が返ってこなければ、入ってる。CTRL+Cで終了してOK)
DBD::ODBCが入ってるかどうか確認だね。
perl -MDBD::ODBC
DBIの使い方
http://www.rfs.jp/sb/perl/index.html
(↑のクイックコマンド集を見ればとりあえず大丈夫)
他の言語からSQL使うのと大して変わらない
SQL文書いてprepare、execute、selectならfetch更新系ならcommit
http://www.datadirect.co.jp/download/uninstall.asp
インストールされてる
「ODBCドライバのインストールと設定」をする為に、
unixODBCのアンインストールが必要。。。。。orz
unixODBCが入ってるか確認
rpm -qa | grep unixODBC
いました。。。。orz
rpm -q --whatrequires unixODBC
↑で依存をチェック
「依存関係はありません」って出たけど、、、
本番サーバだから怖い・・・怖すぎる・・・・。
一応
■Connect for ODBC のアンインストール方法 (UNIXおよびLinux)
Connect for ODBC をインストールしたディレクトリ全てを削除します。
url:http://www.datadirect.co.jp/download/uninstall.asp
って書いてあるからフォルダ名変えて実験もできるけど。。。
本番サーバ・・・・・orz
ということで方向変更
「unixODBC+FreeTDS+DBD::ODBCでSQL Serverに接続する」
↑こっちにします。
※参考
http://rebecca.ac/milano/mt/archives/001412.html
http://www.yokote.net/tech/linux/freetds/index.shtml
1.unixODBCのインストール(今回はすでに入ってるからやらない)
# wget http://www.unixodbc.org/unixODBC-2.2.11.tar.gz
# tar xvzf unixODBC-2.2.11.tar.gz
# cd unixODBC-2.2.11
# ./configure --enable-gui=no
# make
# make install
2.libiconvのインストール(文字コードの変換を行わない場合はlibiconvは必要ないかも)
# wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.10.tar.gz
# wget http://www2d.biglobe.ne.jp/~msyk/software/libiconv/libiconv-1.10-cp932.patch.gz
# tar xvzf libiconv-1.10.tar.gz
# gunzip libiconv-1.10-cp932.patch.gz
# patch -p0 < libiconv-1.10-cp932.patch
# cd libiconv-1.10
# ./configure
# make
# make install
3.FreeTDSのインストール
(FreeTDSの概要 http://www.amy.hi-ho.ne.jp/jbaba/unix/tdsodbc.htm)
$ wget ftp://ftp.ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz
$ wget http://yokote.net/tech/linux/freetds/freetds-stable-0.64.patch
$ tar xvzf freetds-stable.tgz
$ patch -p0 < freetds-stable-0.64.patch
patching file freetds-0.64/src/tds/encodings.h
patching file freetds-0.64/src/tds/write.c
$ cd freetds-0.64/
$ export LD_LIBRARY_PATH=/usr/local/lib
$ export LD_RUN_PATH=/usr/local/lib
◎痛い事実発覚!!!
↑の作業中「make」部分でodbc系が全部コンパイルエラーでたから調べてたら・・・
横手さんの所でこんなんが、、
※執筆時点での最新版は2.2.12ですが、FreeTDS 0.64でコンパイルエラーが起きたので使用しません。
現状もともと入ってるバージョンは2.2.11のunixODBCです。。。orz あぁ。。orz
もう、、、、消すしかない。。。。。。のか。。。orz
ああ。。。。消そうにも。。。
vim /etc/odbcinst.ini
↑こんなんみっけた。Postgresが使ってる可能性があるよ。。。
バージョン下げて入れる方法が一番よさそう。
バージョンは関係ありませんでした。
(unixODBC-devel.i386が入っていない件)
# yum -C list | grep unixODBC
unixODBC.i386 2.2.11-7.1 installed
unixODBC-devel.i386 2.2.11-7.1 base
freeradius-unixODBC.i386 1.1.3-1.2.el5 base
unixODBC-kde.i386 2.2.11-7.1 base#yum install unixODBC-devel
※準備完了。
以下を実行
$./configure --with-unixodbc=/usr --with-msdblib --with-libiconv-prefix=/usr/local
$ make
# make install
・゚・(つД`)・゚・やっとmakeが通ったよー
もう、自分が嫌いになりそうだよー。