カタカタブログ

SIerで働くITエンジニアがカタカタした記録を残す技術ブログ。Java, Oracle Database, Linuxが中心です。たまにRuby on Railsなども。

chcsvをコンパイルしたときのメモ

Oracle DBにSQLを投げて検索結果をCSVやTSV等のフォーマットで標準出力してくれるchcsvというツールがある。
Pro*Cのソースからコンパイルが必要なため、そのときの手順をまとめてみる。
環境はCentOS6.5で、Oracle Database11gR2が入っている。

公式サイト =>http://www.asahi-net.or.jp/~nq7t-kwbt/

公式サイトのchcsv(download)リンクからchcsv_v20.tar.gzをダウンロードし、適当なディレクトリに配置し、解凍・展開する

[oracle@localhost chcsv]$ pwd
/home/oracle/installer/chcsv
[oracle@localhost chcsv]$ ls -l
合計 16
-rw-r--r--. 1 oracle oinstall 13757 3月 26 12:51 2014 chcsv_v20.tar.gz
[oracle@localhost chcsv]$ tar xvfz chcsv_v20.tar.gz
chcsv/
chcsv/BUILD
chcsv/INSTALL
chcsv/INSTALL.euc
chcsv/Makefile
chcsv/Option.pc
chcsv/OutPut.pc
chcsv/Signal.pc
chcsv/README
chcsv/README.euc
chcsv/README.sjis
chcsv/chcsv.h
chcsv/chcsv.pc
chcsv/extern.h
chcsv/sqlda.pc
chcsv/sqlhead.h

Cコンパイラがあることを確認

[oracle@localhost chcsv]$ gcc -v
Using built-in specs.
Target: x86_64-redhat-linux
コンフィグオプション: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile --enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib --with-ppl --with-cloog --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
スレッドモデル: posix
gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC)

Pro*Cコンパイラがあることを確認
(※Pro*CコンパイラOracle DBまたはOracle Clientを入れるとついてくる。ただしOracle Clientの場合はAvailable Product Components選択時にOracle Programmerにチェックを入れる必要がある)f:id:osn_th:20140328170020p:plain

[oracle@localhost chcsv]$ proc -v
proc: error while loading shared libraries: libclntsh.so.11.1: cannot open shared object file: No such file or directory

=>libclntsh.so.11.1がないためエラーになっている。
=>libclntsh.so.11.1を探す。以下にあった。

[oracle@localhost lib]$ ls -l $ORACLE_HOME/lib/libclntsh.so.11.1
-rwxr-xr-x. 1 oracle oinstall 48725713 12月 10 15:57 2013 /u01/app/oracle/product/11.2.0/dbhome_1/lib/libclntsh.so.11.1

=>$LD_LIBRARY_PATHに$ORACLE_HOME/libを通す
=> .bashrcに以下を追加

export LD_LIBRARY_PATH=$ORACLE_HOME/lib

=>再実行

[oracle@localhost chcsv]$ proc -v
Pro*C/C++: Release 11.2.0.1.0 - Production on Wed Mar 26 13:08:23 2014
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
System default option values taken from: /u01/app/oracle/product/11.2.0/dbhome_1/precomp/admin/pcscfg.cfg
PCC-F-02101, Unable to open input file: "-v.pc"

=> 入力ファイルがないためエラーになっているが、実行はできているよう
proc.mkを探す

[oracle@localhost chcsv]$ find $ORACLE_HOME -name proc.mk -print

見つからず。。とりあえずmakeしてみる

[oracle@localhost chcsv]$ make
./BUILD
make[1]: ディレクトリ `/home/oracle/installer/chcsv/chcsv' に入ります
make[1]: /u01/app/oracle/product/11.2.0/dbhome_1/precomp/demo/proc/proc.mk: そのようなファイルやディレクトリはあり ません
make[1]: *** ターゲット `/u01/app/oracle/product/11.2.0/dbhome_1/precomp/demo/proc/proc.mk' を make するルールがあ りません. 中止.
make[1]: ディレクトリ `/home/oracle/installer/chcsv/chcsv' から出ます
make: *** [all] エラー 2

=> やっぱりproc.mkがないためエラーになっている
=> BUILD ファイルのコメントによると、proc.mkはdemo_proc.mkという名前になっていることもあるらしい
demo_proc.mkはOracle Database Examplesに含まれているらしいので、まずメディアをダウンロードする。

以下からLinux x86-64のSee All のリンクをクリック
http://www.oracle.com/technology/software/products/database/index.html
Oracle Database 12c Release 1 Examples (12.1.0.1.0) for Linux x86-64
のlinuxamd64_12c_examples.zip のリンクからダウンロードする。
※DBは11gR2だったが、問題なく12cのExampleで動いた

インストーラを配置し、解凍

[oracle@localhost db12c]$ pwd
/home/oracle/installer/db12c
[oracle@localhost db12c]$ ls
linuxamd64_12c_examples.zip
[oracle@localhost db12c]$ unzip linuxamd64_12c_examples.zip

Oracle Database Examplesをインストールf:id:osn_th:20140328170007p:plain

以下、インストーラの指示に従ってインストールを進める。
基本的に「次へ」をクリックするだけ。
インストールが完了すると、demo_proc.mkが生成されたことが確認できる

[oracle@localhost ~]$ ls -l$ORACLE_HOME/precomp/demo/proc/demo_proc.mk
-rw-r--r--. 1 oracle oinstall 7643 5月 24 09:44 2013 /u01/app/oracle/product/11.2.0/dbhome_1/precomp/demo/proc/demo_proc.mk

ビルドファイルを書き換え、$ORACLE_HOME/precomp/demo/proc/demo_proc.mk build を使うように修正する。

[oracle@localhost chcsv]$ pwd
/home/oracle/installer/chcsv/chcsv
[oracle@localhost chcsv]$ cp -p BUILD BUILD.org
make -f $ORACLE_HOME/precomp/demo/proc/demo_proc.mk build \
 EXE=chcsv OBJS="chcsv.o sqlda.o Option.o OutPut.o Signal.o"

make再実行

[oracle@localhost chcsv]$ make
./BUILD
make[1]: ディレクトリ `/home/oracle/installer/chcsv/chcsv' に入ります
make -f /u01/app/oracle/product/11.2.0/dbhome_1/precomp/demo/proc/demo_proc.mk PROCFLAGS="" PCCSRC=chcsv I_SYM=include= pc1
make[2]: ディレクトリ `/home/oracle/installer/chcsv/chcsv' に入ります
proc iname=chcsv include=. include=/u01/app/oracle/product/11.2.0/dbhome_1/precomp/public include=/u01/app/oracle/product/11.2.0/dbhome_1/rdbms/public include=/u01/app/oracle/product/11.2.0/dbhome_1/rdbms/demo include=/u01/app/oracle/product/11.2.0/dbhome_1/plsql/public include=/u01/app/oracle/product/11.2.0/dbhome_1/network/public
Pro*C/C++: Release 11.2.0.1.0 - Production on Fri Mar 28 15:05:03 2014
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
System default option values taken from: /u01/app/oracle/product/11.2.0/dbhome_1/precomp/admin/pcscfg.cfg
Error at line 34, column 10 in file /usr/include/string.h
#include <stddef.h>
.........1
PCC-S-02015, unable to open include file
Syntax error at line 45, column 40, file /usr/include/string.h:
Error at line 45, column 40 in file /usr/include/string.h
 __const void *__restrict __src, size_t __n)
.......................................1
PCC-S-02201, Encountered the symbol "size_t" when expecting one of the following
:
(・・・略)

=> コンパイルエラー。
C標準ライブラリファイルの参照がおかしい。
以下のファイルにproc*cプリコンパイラの参照情報が記載されているので確認する。

[oracle@localhost chcsv]$ ls -l $ORACLE_HOME/precomp/admin/pcscfg.cfg
-rw-r--r--. 1 oracle oinstall 323 3月 28 15:59 2014 /u01/app/oracle/product/11.2.0/dbhome_1/precomp/admin/pcscfg.cfg
[oracle@localhost chcsv]$ cat /u01/app/oracle/product/11.2.0/dbhome_1/precomp/admin/pcscfg.cfg
sys_include=($ORACLE_HOME/precomp/public,/usr/include,/usr/lib/gcc-lib/x86_64-redhat-linux/3.2.3/include,/usr/lib/gcc/x86_64-redhat-linux/4.1.1/include,/usr/lib64/gcc/x86_64-suse-linux/4.1.0/include,/usr/lib64/gcc/x86_64-suse-linux/4.3/include)
ltype=short
define=__x86_64__

いろいろなバージョンのgccのincludeファイルへのパスがsys_includeという名前で設定されている。現在使っているgccのバージョンを改めて確認する

[oracle@localhost chcsv]$ gcc -v
Using built-in specs.
Target: x86_64-redhat-linux
コンフィグオプション: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile --enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib --with-ppl --with-cloog --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
スレッドモデル: posix
gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC)

=> 4.4.7を使っている。一方で、上で見たpcscfg.cfgのsys_includeには4.4.7のincludeファイルを参照する設定がない。
=> 4.4.7のincludeファイルパスを確認する

[oracle@localhost chcsv]$ ls /usr/lib/gcc/x86_64-redhat-linux/4.4.7/include/
abmintrin.h bmiintrin.h cross-stdarg.h float.h iso646.h mm3dnow.h nmmintrin.h popcntintrin.h stdbool.h syslimits.h unwind.h x86intrin.h
ammintrin.h bmmintrin.h emmintrin.h fma4intrin.h limits.h mm_malloc.h omp.h smmintrin.h stddef.h tbmintrin.h varargs.h xmmintrin.h
avxintrin.h cpuid.h f16cintrin.h immintrin.h lwpintrin.h mmintrin.h pmmintrin.h stdarg.h stdfix.h tmmintrin.h wmmintrin.h xopintrin.h

=>/usr/lib/gcc/x86_64-redhat-linux/4.4.7/include/ にあることを確認
pcscfg.cfgのsys_includeに上記パスを追加する

[oracle@localhost chcsv]$ cat $ORACLE_HOME/precomp/admin/pcscfg.cfg
sys_include=($ORACLE_HOME/precomp/public,/usr/include,/usr/lib/gcc-lib/x86_64-redhat-linux/3.2.3/include,/usr/lib/gcc/x86_64-redhat-linux/4.1.1/include,/usr/lib64/gcc/x86_64-suse-linux/4.1.0/include,/usr/lib64/gcc/x86_64-suse-linux/4.3/include,/usr/lib/gcc/x86_64-redhat-linux/4.4.7/include/)
ltype=short
define=__x86_64__

再度makeを実行

[oracle@localhost chcsv]$ make
./BUILD
make[1]: ディレクトリ `/home/oracle/installer/chcsv/chcsv' に入ります
make -f /u01/app/oracle/product/11.2.0/dbhome_1/precomp/demo/proc/demo_proc.mk PROCFLAGS="" PCCSRC=chcsv I_SYM=include= pc1
make[2]: ディレクトリ `/home/oracle/installer/chcsv/chcsv' に入ります
proc iname=chcsv include=. include=/u01/app/oracle/product/11.2.0/dbhome_1/precomp/public include=/u01/app/oracle/product/11.2.0/dbhome_1/rdbms/public include=/u01/app/oracle/product/11.2.0/dbhome_1/rdbms/demo include=/u01/app/oracle/product/11.2.0/dbhome_1/plsql/public include=/u01/app/oracle/product/11.2.0/dbhome_1/network/public
Pro*C/C++: Release 11.2.0.1.0 - Production on Fri Mar 28 16:00:00 2014
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
System default option values taken from: /u01/app/oracle/product/11.2.0/dbhome_1/precomp/admin/pcscfg.cfg
make[2]: ディレクトリ `/home/oracle/installer/chcsv/chcsv' から出ます
/usr/bin/gcc -O3 -trigraphs -fPIC -DPRECOMP -I. -I/u01/app/oracle/product/11.2.0/dbhome_1/precomp/public -I/u01/app/oracle/product/11.2.0/dbhome_1/rdbms/public -I/u01/app/oracle/product/11.2.0/dbhome_1/rdbms/demo -I/u01/app/oracle/product/11.2.0/dbhome_1/plsql/public -I/u01/app/oracle/product/11.2.0/dbhome_1/network/public -DLINUX -DORAX86_64 -D_GNU_SOURCE -D_LARGEFILE64_SOURCE=1 -D_LARGEFILE_SOURCE=1 -DSLTS_ENABLE -DSLMXMX_ENABLE -D_REENTRANT -DNS_THREADS -DLONG_IS_64 -DSS_64BIT_SERVER -DLDAP_CM -m64 -c chcsv.c
chcsv.c: In function ‘main’:
chcsv.c:544: 警告: キャストによってポインタから異なるサイズの整数となります
make -f /u01/app/oracle/product/11.2.0/dbhome_1/precomp/demo/proc/demo_proc.mk PROCFLAGS="" PCCSRC=sqlda I_SYM=include= pc1
make[2]: ディレクトリ `/home/oracle/installer/chcsv/chcsv' に入ります
proc iname=sqlda include=. include=/u01/app/oracle/product/11.2.0/dbhome_1/precomp/public include=/u01/app/oracle/product/11.2.0/dbhome_1/rdbms/public include=/u01/app/oracle/product/11.2.0/dbhome_1/rdbms/demo include=/u01/app/oracle/product/11.2.0/dbhome_1/plsql/public include=/u01/app/oracle/product/11.2.0/dbhome_1/network/public
Pro*C/C++: Release 11.2.0.1.0 - Production on Fri Mar 28 16:00:05 2014
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
System default option values taken from: /u01/app/oracle/product/11.2.0/dbhome_1/precomp/admin/pcscfg.cfg
make[2]: ディレクトリ `/home/oracle/installer/chcsv/chcsv' から出ます
/usr/bin/gcc -O3 -trigraphs -fPIC -DPRECOMP -I. -I/u01/app/oracle/product/11.2.0/dbhome_1/precomp/public -I/u01/app/oracle/product/11.2.0/dbhome_1/rdbms/public -I/u01/app/oracle/product/11.2.0/dbhome_1/rdbms/demo -I/u01/app/oracle/product/11.2.0/dbhome_1/plsql/public -I/u01/app/oracle/product/11.2.0/dbhome_1/network/public -DLINUX -DORAX86_64 -D_GNU_SOURCE -D_LARGEFILE64_SOURCE=1 -D_LARGEFILE_SOURCE=1 -DSLTS_ENABLE -DSLMXMX_ENABLE -D_REENTRANT -DNS_THREADS -DLONG_IS_64 -DSS_64BIT_SERVER -DLDAP_CM -m64 -c sqlda.c
sqlda.c: In function ‘SetDA’:
sqlda.c:932: 警告: キャストによってポインタから異なるサイズの整数となります
sqlda.c:937: 警告: キャストによってポインタから異なるサイズの整数となります
sqlda.c:945: 警告: キャストによってポインタから異なるサイズの整数となります
make -f /u01/app/oracle/product/11.2.0/dbhome_1/precomp/demo/proc/demo_proc.mk PROCFLAGS="" PCCSRC=Option I_SYM=include= pc1
make[2]: ディレクトリ `/home/oracle/installer/chcsv/chcsv' に入ります
proc iname=Option include=. include=/u01/app/oracle/product/11.2.0/dbhome_1/precomp/public include=/u01/app/oracle/product/11.2.0/dbhome_1/rdbms/public include=/u01/app/oracle/product/11.2.0/dbhome_1/rdbms/demo include=/u01/app/oracle/product/11.2.0/dbhome_1/plsql/public include=/u01/app/oracle/product/11.2.0/dbhome_1/network/public
Pro*C/C++: Release 11.2.0.1.0 - Production on Fri Mar 28 16:00:06 2014
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
System default option values taken from: /u01/app/oracle/product/11.2.0/dbhome_1/precomp/admin/pcscfg.cfg
make[2]: ディレクトリ `/home/oracle/installer/chcsv/chcsv' から出ます
/usr/bin/gcc -O3 -trigraphs -fPIC -DPRECOMP -I. -I/u01/app/oracle/product/11.2.0/dbhome_1/precomp/public -I/u01/app/oracle/product/11.2.0/dbhome_1/rdbms/public -I/u01/app/oracle/product/11.2.0/dbhome_1/rdbms/demo -I/u01/app/oracle/product/11.2.0/dbhome_1/plsql/public -I/u01/app/oracle/product/11.2.0/dbhome_1/network/public -DLINUX -DORAX86_64 -D_GNU_SOURCE -D_LARGEFILE64_SOURCE=1 -D_LARGEFILE_SOURCE=1 -DSLTS_ENABLE -DSLMXMX_ENABLE -D_REENTRANT -DNS_THREADS -DLONG_IS_64 -DSS_64BIT_SERVER -DLDAP_CM -m64 -c Option.c
Option.c: In function ‘Option’:
Option.c:546: 警告: キャストによってポインタから異なるサイズの整数となります
Option.c:555: 警告: キャストによってポインタから異なるサイズの整数となります
Option.c:566: 警告: キャストによってポインタから異なるサイズの整数となります
Option.c:581: 警告: キャストによってポインタから異なるサイズの整数となります
Option.c:592: 警告: キャストによってポインタから異なるサイズの整数となります
Option.c:601: 警告: キャストによってポインタから異なるサイズの整数となります
Option.c:610: 警告: キャストによってポインタから異なるサイズの整数となります
make -f /u01/app/oracle/product/11.2.0/dbhome_1/precomp/demo/proc/demo_proc.mk PROCFLAGS="" PCCSRC=OutPut I_SYM=include= pc1
make[2]: ディレクトリ `/home/oracle/installer/chcsv/chcsv' に入ります
proc iname=OutPut include=. include=/u01/app/oracle/product/11.2.0/dbhome_1/precomp/public include=/u01/app/oracle/product/11.2.0/dbhome_1/rdbms/public include=/u01/app/oracle/product/11.2.0/dbhome_1/rdbms/demo include=/u01/app/oracle/product/11.2.0/dbhome_1/plsql/public include=/u01/app/oracle/product/11.2.0/dbhome_1/network/public
Pro*C/C++: Release 11.2.0.1.0 - Production on Fri Mar 28 16:00:07 2014
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
System default option values taken from: /u01/app/oracle/product/11.2.0/dbhome_1/precomp/admin/pcscfg.cfg
make[2]: ディレクトリ `/home/oracle/installer/chcsv/chcsv' から出ます
/usr/bin/gcc -O3 -trigraphs -fPIC -DPRECOMP -I. -I/u01/app/oracle/product/11.2.0/dbhome_1/precomp/public -I/u01/app/oracle/product/11.2.0/dbhome_1/rdbms/public -I/u01/app/oracle/product/11.2.0/dbhome_1/rdbms/demo -I/u01/app/oracle/product/11.2.0/dbhome_1/plsql/public -I/u01/app/oracle/product/11.2.0/dbhome_1/network/public -DLINUX -DORAX86_64 -D_GNU_SOURCE -D_LARGEFILE64_SOURCE=1 -D_LARGEFILE_SOURCE=1 -DSLTS_ENABLE -DSLMXMX_ENABLE -D_REENTRANT -DNS_THREADS -DLONG_IS_64 -DSS_64BIT_SERVER -DLDAP_CM -m64 -c OutPut.c
OutPut.c: In function ‘OutPut’:
OutPut.c:520: 警告: キャストによってポインタから異なるサイズの整数となります
OutPut.c:525: 警告: キャストによってポインタから異なるサイズの整数となります
OutPut.c:529: 警告: キャストによってポインタから異なるサイズの整数となります
OutPut.c: In function ‘FlashBuffer’:
OutPut.c:557: 警告: キャストによってポインタから異なるサイズの整数となります
make -f /u01/app/oracle/product/11.2.0/dbhome_1/precomp/demo/proc/demo_proc.mk PROCFLAGS="" PCCSRC=Signal I_SYM=include= pc1
make[2]: ディレクトリ `/home/oracle/installer/chcsv/chcsv' に入ります
proc iname=Signal include=. include=/u01/app/oracle/product/11.2.0/dbhome_1/precomp/public include=/u01/app/oracle/product/11.2.0/dbhome_1/rdbms/public include=/u01/app/oracle/product/11.2.0/dbhome_1/rdbms/demo include=/u01/app/oracle/product/11.2.0/dbhome_1/plsql/public include=/u01/app/oracle/product/11.2.0/dbhome_1/network/public
Pro*C/C++: Release 11.2.0.1.0 - Production on Fri Mar 28 16:00:08 2014
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
System default option values taken from: /u01/app/oracle/product/11.2.0/dbhome_1/precomp/admin/pcscfg.cfg
make[2]: ディレクトリ `/home/oracle/installer/chcsv/chcsv' から出ます
/usr/bin/gcc -O3 -trigraphs -fPIC -DPRECOMP -I. -I/u01/app/oracle/product/11.2.0/dbhome_1/precomp/public -I/u01/app/oracle/product/11.2.0/dbhome_1/rdbms/public -I/u01/app/oracle/product/11.2.0/dbhome_1/rdbms/demo -I/u01/app/oracle/product/11.2.0/dbhome_1/plsql/public -I/u01/app/oracle/product/11.2.0/dbhome_1/network/public -DLINUX -DORAX86_64 -D_GNU_SOURCE -D_LARGEFILE64_SOURCE=1 -D_LARGEFILE_SOURCE=1 -DSLTS_ENABLE -DSLMXMX_ENABLE -D_REENTRANT -DNS_THREADS -DLONG_IS_64 -DSS_64BIT_SERVER -DLDAP_CM -m64 -c Signal.c
/usr/bin/gcc -m64 -o chcsv chcsv.o sqlda.o Option.o OutPut.o Signal.o -L/u01/app/oracle/product/11.2.0/dbhome_1/lib/ -lclntsh `cat /u01/app/oracle/product/11.2.0/dbhome_1/lib/ldflags` `cat /u01/app/oracle/product/11.2.0/dbhome_1/lib/sysliblist` -ldl -lm
chcsv.o: In function `SysOraErr':
chcsv.c:(.text+0x443): warning: `sys_errlist' is deprecated; use `strerror' or `strerror_r' instead
chcsv.c:(.text+0x3a2): warning: `sys_nerr' is deprecated; use `strerror' or `strerror_r' instead
make[1]: ディレクトリ `/home/oracle/installer/chcsv/chcsv' から出ます

=> 今度はエラーなくmakeコンパイル終了
chcsvが生成されていることを確認

[oracle@localhost chcsv]$ ls -ltr
合計 292
-rwxr-xr-x. 1 oracle oinstall 1211 4月 5 23:09 1999 BUILD.org
-rw-r--r--. 1 oracle oinstall 1150 4月 5 23:09 1999 sqlhead.h
-rw-r--r--. 1 oracle oinstall 11520 4月 5 23:09 1999 sqlda.pc
-rw-r--r--. 1 oracle oinstall 1160 4月 5 23:09 1999 extern.h
-rw-r--r--. 1 oracle oinstall 8544 4月 5 23:09 1999 chcsv.pc
-rw-r--r--. 1 oracle oinstall 3801 4月 5 23:09 1999 chcsv.h
-rw-r--r--. 1 oracle oinstall 2709 4月 5 23:09 1999 Signal.pc
-rw-r--r--. 1 oracle oinstall 3839 4月 5 23:09 1999 README.sjis
-rw-r--r--. 1 oracle oinstall 3839 4月 5 23:09 1999 README.euc
-rw-r--r--. 1 oracle oinstall 3492 4月 5 23:09 1999 README
-rw-r--r--. 1 oracle oinstall 2803 4月 5 23:09 1999 OutPut.pc
-rw-r--r--. 1 oracle oinstall 7000 4月 5 23:09 1999 Option.pc
-rw-r--r--. 1 oracle oinstall 168 4月 5 23:09 1999 Makefile
-rw-r--r--. 1 oracle oinstall 1835 4月 5 23:09 1999 INSTALL.euc
-rw-r--r--. 1 oracle oinstall 1577 4月 5 23:09 1999 INSTALL
-rwxr-xr-x. 1 oracle oinstall 1211 3月 28 15:04 2014 BUILD
-rw-r--r--. 1 oracle oinstall 25785 3月 28 16:00 2014 chcsv.c
-rw-r--r--. 1 oracle oinstall 0 3月 28 16:00 2014 chcsv.lis
-rw-r--r--. 1 oracle oinstall 11248 3月 28 16:00 2014 chcsv.o
-rw-r--r--. 1 oracle oinstall 0 3月 28 16:00 2014 sqlda.lis
-rw-r--r--. 1 oracle oinstall 35032 3月 28 16:00 2014 sqlda.c
-rw-r--r--. 1 oracle oinstall 14936 3月 28 16:00 2014 sqlda.o
-rw-r--r--. 1 oracle oinstall 0 3月 28 16:00 2014 Option.lis
-rw-r--r--. 1 oracle oinstall 21478 3月 28 16:00 2014 Option.c
-rw-r--r--. 1 oracle oinstall 9384 3月 28 16:00 2014 Option.o
-rw-r--r--. 1 oracle oinstall 0 3月 28 16:00 2014 OutPut.lis
-rw-r--r--. 1 oracle oinstall 17281 3月 28 16:00 2014 OutPut.c
-rw-r--r--. 1 oracle oinstall 3104 3月 28 16:00 2014 OutPut.o
-rw-r--r--. 1 oracle oinstall 17187 3月 28 16:00 2014 Signal.c
-rw-r--r--. 1 oracle oinstall 0 3月 28 16:00 2014 Signal.lis
-rw-r--r--. 1 oracle oinstall 4016 3月 28 16:00 2014 Signal.o
-rwxr-xr-x. 1 oracle oinstall 30134 3月 28 16:08 2014 chcsv

叩いてみる。

[oracle@localhost chcsv]$ ./chcsv
./chcsv Version 2.00, Copyright (C) 1995 Batayan.
Usage: ./chcsv userid/passwd
 [-o Output Filename]
 [-a Appended Output Filename]
 [-i Input Filename]
 [-e Enclosure]
 [-t Terminater]
 [-l Length of Long Type]
 [-f Array size of fetch]
 [-b Buffer size of output]
 [-v] [-h] [-n]
 [const] [const] ....
*********************************************************************
 chcsv is distributed under the GNU General Public License.
 chcsv comes with ABSOLUTELY NO WARRANTY.
 This is free software, and you are welcome to redistribute it
 under certain conditions, GPL.
 If you have any PROBLEMS with chcsv, or find BUGS, please mailto
 kawabata@personal.email.ne.jp
 Thank you !!!
*********************************************************************

実行できることを確認

[oracle@localhost chcsv]$ echo "select sysdate,sysdate from dual" | ./chcsv hr/hr@orcl
14-03-28,14-03-28

=> 正しくSQL実行結果がCSV形式で取得できている!