isql for Sybaseを使ってみる
isql for Sybaseを使ってみる
0.更新履歴
- 2001.04.16 初版
- 2001.05.14 ちょっと修正
- 2002.04.17 set languageを追記.
1.はじめに
このドキュメントは,Sybaseのisqlコマンドについて説明する.
2.ログイン
ログイン時のユーザIDとパスワードは,Oracleと違い,大文字小文字を区別することに注意.
isql -Uuser -Ppassword -Sservername
|
3.コマンドを実行する
infileにselect文など実行したいコマンドを書き込んでおけばよい.
infileは,テキストファイルならば,拡張子は関係ない.
isql -Uuser -Ppassword -Sservername -iinfile
|
4.実行結果をファイルに書き出す
isql -Uuser -Ppassword -Sservername -iinfile -oOutfile
|
実行結果をOutfileに書き出す.
5.1行の文字数を指定する
isqlでは,デフォルト80文字で改行されてしまう.
-wオプションを指定すれば,任意の桁数まで1行で出力される.
isql -Uuser -Ppassword -Sservername -iinfile -oOutfile -w2000
|
6.セパレータ文字を指定する(-s)
-sで指定した文字をセパレータとして出力する.
デフォルトはスペース文字.
カンマをセパレータにしたサンプル
C:\>isql -Usa -P -SSYBASE01 -s,
1> select * from job_master
2> go
,job_id,job_name
,------,---------
,1 ,高校生
,2 ,大学生
,3 ,専門学生
,4 ,会社員
,6 ,公務員
,7 ,フリータ
,8 ,主婦
,9 ,その他
(8 rows affected)
1>
|
7.シェルコマンドを実行する(!!)
行頭に!!を指定することで,OSのコマンドを実行することができる.
C:\>isql -Usa -P -SSYBASE01
1> !!dir
[sh:dir]
Volume in drive C has no label.
Volume Serial Number is 2025-5CD8
Directory of C:\
2001/03/17 10:47 11,605 air_chec
2000/07/30 00:47 578 APInstal
2001/04/16 12:05 4 cta00500
2001/03/06 12:14 0 cta00592
2001/03/25 00:12 28 cta00956
1>
|
8.データベースを指定する(-d)
-Dを使うことで,use master等の利用するデータベースの選択を実行時に設定できる.
C:\>sql -Uuser -Ppassword -Sservername -D master
1>
|
9.コマンドをエコーで返す(-e)
-iオプションを使い,ファイルからコマンド(SQL文等)を読み込んで実行する際,通常ならばその出力結果に文が出力されない.
(5847 rows affected)
(16509 rows affected)
|
-eオプションをつけることで,コマンドが出力結果にエコーされる.
1> delete tableA
2> delete tableB
(5847 rows affected)
(16509 rows affected)
|
この場合でも,GOコマンドは表示されない.
10.テーブルヘッダを出力しない(-b)
C:\>isql -Usa -P -SSYBASE01 -b
1> select * from job_master
2> go
01 高校生
02 大学生
03 専門学生
04 会社員
05 自営業・自由業
06 公務員
07 フリーター
08 主婦
09 その他
(9 rows affected)
1>
|
12.ネットワークパケットサイズを指定する(-A size)
現在のパケットサイズは,select * from sysprocessesでチェックでき,network_pktszを確認する.
1> select network_pktsz from sysprocesses
2> go
network_pktsz
-------------
512
512
512
512
512
512
512
512
(8 rows affected)
1>
|
512の倍数で,default network packet sizeと,maximum
network packet sizeの間である必要がある.
13.何行ごとにヘッダを表示するか指定する(-h)
デフォルトでは,最初の1回しか表示されない.
1> select * from job_master
2> go
job_id job_name
------ -----------------------------------
01 高校生
02 大学生
03 専門学生
04 会社員
05 自営業・自由業
06 公務員
07 フリーター
08 主婦
09 その他
(9 rows affected)
1> quit
C:\>
|
以下の例では,3レコード毎にヘッダを表示している.
C:\>isql -Usa -P -SSYBASE01 -h 3
1> select * from job_master
2> go
job_id job_name
------ -----------------------------------
01 高校生
02 大学生
03 専門学生
job_id job_name
------ -----------------------------------
04 会社員
05 自営業・自由業
06 公務員
job_id job_name
------ -----------------------------------
07 フリーター
08 主婦
09 その他
(9 rows affected)
1>
|
14.何回も実行する(go)
goの後に回数を入力するとすると,指定された回数だけ実行される.
1> print "Hello"
2> go 3
Hello
Hello
Hello
3 xacts:
1>
|
15.バージョンを表示する(-v)
C:\>isql -v
Sybase CTISQL Utility/11.1.1/P2-EBF8060/PC Intel/1/OPT/Mon Aug 10 15:56:41 1998
Confidential property of Sybase, Inc.
Copyright 1987, 1998
Sybase, Inc. All rights reserved.
Unpublished rights reserved under U.S. copyright laws.
This software contains confidential and trade secret information of Sybase,
Inc. Use, duplication or disclosure of the software and documentation by
the U.S. Government is subject to restrictions set forth in a license
agreement between the Government and Sybase, Inc. or other written
agreement specifying the Government's rights to use the software and any
applicable FAR provisions, for example, FAR 52.227-19.
Sybase, Inc. 6475 Christie Avenue, Emeryville, CA 94608, USA
C:\>
|
16.入力内容を消去する
入力途中で間違えた場合に,resetコマンドを入力すると,中身が消える
1> select x = 100
2> reset
1>
|
17.Oracle風に使う(コマンドターミネータの変更 -c )
C:\>isql -Usa -P -SSYBtest -c ;
1> select x=1
2> ;
x
-----------
1
(1 row affected)
1>
|
18.SQL文のパフォーマンス統計情報を出力する(-p)
C:\>isql -Usa -P -SSYBtest -p
1> select * from sysobjects
2> go
〜略〜
01/04/23 0 0 0
0 0 0 0 0
NULL
mon_authorize_non_sa 848006052 1 P 0 4
0 0 128 01/04/23
01/04/23 0 0 0
0 0 0 0 0
NULL
(64 rows affected)
Execution Time (ms.): 0 Clock Time (ms.): 1000
1>
|
19.datetime型データの表示を制御する
日付型のデータを整形するには,convert()関数を使用する.
(1 row affected)
1> select convert(char(12),getdate(),11)
2> go
------------
01/04/24
(1 row affected)
1> select convert(char(12),getdate(),111)
2> go
------------
2001/04/24
(1 row affected)
1> select convert(char(12),getdate(),8)
2> go
------------
13:22:22
(1 row affected)
1> select convert(char(12),getdate(),108)
2> go
------------
14:59:22
(1 row affected)
1>
|
与えるパラメータは次のとおりである.
パラメータ |
標準 |
結果 |
0または100 |
デフォルト |
mon dd yyyy hh:mm AM
|
1 |
USA |
mm/dd/yy
|
101 |
USA |
mm/dd/yyyy
|
2 |
SQL規格 |
yy.mm.dd
|
11 |
日本 |
yy/mm/dd
|
111 |
日本 |
yyyy/mm/dd
|
12 |
ISO |
yymmdd
|
112 |
ISO |
yyyymmdd
|
8 |
|
hh:mm:ss
|
108 |
|
hh:mm:ss
|
20.Hello,World
1> begin
2> print "Hello,world!"
3> end
4> go
Hello,world!
1> print "Hello,world!"
2> go
Hello,world!
1>
|
21.計算とかしてみる
1> declare @c1 int,@c2 int
2> select @c1 = 100
3> select @c2 = 10
4> select @c1,@c2
5> go
(1 row affected)
(1 row affected)
----------- -----------
100 10
(1 row affected)
1> declare @c1 int,@c2 int
2> select @c1 = 100
3> select @c2 = 10
4> select @c1 = @c1 + @c2
5> select @c1
6> go
(1 row affected)
(1 row affected)
(1 row affected)
-----------
110
(1 row affected)
1>
|
22.set languageで英語で表示させてみる
- 使用しているターミナルが日本語対応していないなどで,こんな感じで文字化けけする時
1> sp_helpdb PoiPoiDB
2> go
name db_size owner dbid
created
status
------------------------ ------------- ------------------------ ------
--------------
----------------------------------------------------------------------
PoiPoiDB 6000.0 MB sybase 5
Jan 10, 2002
?I?v?V?e?“?I?Z?b?g?3?e?A?e?U?1?nB
(1 row affected)
device_fragments size usage free kbytes
------------------------------ ------------- -------------------- -----------
sybdb_dat1 2000.0 MB ?f[?^e?p 2046064
sybdb_dat2 2000.0 MB ?f[?^e?p 2048000
sybdb_idx 1000.0 MB ??Oe?p 1023456
(return status = 0) 1000.0 MB ?
1> set language us_english
|
- set languageでus_englishを設定すると
1> set language us_english
2> go
1> sp_helpdb PoiPoiDB
2> go
name db_size owner dbid
created
status
------------------------ ------------- ------------------------ ------
--------------
----------------------------------------------------------------------
PoiPoiDB 6000.0 MB sybase 5
Jan 10, 2002
no options set
(1 row affected)
device_fragments size usage free kbytes
------------------------------ ------------- -------------------- -----------
sybdb_dat1 2000.0 MB data only 2046064
sybdb_dat2 2000.0 MB data only 2048000
sybdb_idx 1000.0 MB data only 1024000
sybdb_log 1000.0 MB log only 1023456
(return status = 0)
1>
|