UJP - 技術情報

Life is fun and easy!

不正IP報告数

Okan Sensor
 
メイン
ログイン
ブログ カテゴリ一覧

     

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.コマンドを実行する

 infileselect文など実行したいコマンドを書き込んでおけばよい.

 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>

  • ちゃんとよめる.



広告スペース
Google