はじめに
色々作業をしていると、管理ポータル画面を起動して操作するのが面倒になってきます。
その時は、ターミナルからコマンドでポンッと実行したいものですよね。
今回は、データベース周りでの色々なコマンドをご紹介いたします。
マウント/ディスマウント
データベースのコピー等、一番使うコマンドだと思います。
ネームスペース「%SYS」で使用します。
インスタンスメソッド・クラスメソッドの両方で実行可能なので、その時の状況によって使い分けて下さい。
インスタンスメソッド版
zn "%SYS"
s db=##class(SYS.Database).%OpenId("D:\IRISDB\SAMPLE-DATA")
w db.Dismount() // ディスマント
w db.Mount() // マウント
クラスメソッド版
s path="D:\IRISDB\SAMPLE-DATA" // データベースのフォルダパス
w ##class(SYS.Database).DismountDatabase(path) // ディスマウント
w ##class(SYS.Database).MountDatabase(path) // マウント
データベースの作成
新しいデータベースを作成します。
引数は、第1第2引数に作成フォルダと初期サイズ(MB)を指定しますが、他にも色々と引数を渡す事でカスタマイズが可能です。
s path = "D:\IRISDB\NEWDB"
w ##class(SYS.Database).CreateDatabase(path, 1)
「SYS.Database.cls」をインスタンス化してから「%Save」でも作成可能です。
s db = ##class(SYS.Database).%New()
s db.Directory = path // データベースのフォルダパス
w db.%Save()
作成した段階では、ローカルデータベースとして認識していない為、一覧には表示されません。
下記コマンドで、ローカルデータベースとして認識させます。
s dbName = "NEWDB" // データベース名
s prop("Directory") = path // データベースのフォルダパス
w ##Class(Config.Databases).Create(dbName,.prop)
無事認識しましたね。
「Config.Databases」を利用して、別のデータベースに切り替える事も可能です。
※下記コマンドになります。
w ##class(Config.Databases).Get(dbName, .prop)
s p("Directory") = path
w ##class(Config.Databases).Modify(dbName, .p)
設定を変数「prop」で受け取って、ディレクトリのみ変更する形になります。
各種マッピング
ついでなので、各種マッピングもコマンドで登録しちゃいましょう。
基本的な操作は、グローバル・ルーチン・パッケージどれも変わりません。
操作するクラス名が変わる程度です。
グローバルマッピング
設定
s prop("Database")="NEWDB" // データベース名
s namespace = "SAMPLE" // ネームスペース名
s mask = "TestNewDt.*" // グローバル
w ##Class(Config.MapGlobals).Create(namespace , mask, .prop)
削除
s namespace = "SAMPLE"
s mask = "TestNewDt.*"
w ##Class(Config.MapGlobals).Delete(namespace, mask)
検索
s namespace = "SAMPLE"
s rs=##class(%ResultSet).%New("Config.MapGlobals:List")
d rs.Execute(namespace)
while( rs.%Next() ){ w !,rs.Name }
d rs.Close() k rs
ルーチンマッピング
設定
s prop("Database")="NEWDB" // データベース名
s namespace = "SAMPLE" // ネームスペース名
s mask = "Test*"
s sts=##Class(Config.MapRoutines).Create(namespace, mask,.prop)
削除
s namespace = "SAMPLE"
s mask = "Test*"
w ##Class(Config.MapRoutines).Delete(namespace, mask)
検索
s namespace = "SAMPLE"
s rs=##class(%ResultSet).%New("Config.MapRoutines:List")
d rs.Execute(namespace)
while( rs.%Next() ){ w !,rs.Name }
d rs.Close() k rs
パッケージマッピング
設定
データベースに該当のパッケージが無くても設定できてしまいます。
※打ち間違えにご注意ください。
s prop("Database")="NEWDB" // データベース名
s namespace = "SAMPLE" // ネームスペース名
s packageNm = "sample" // パッケージ名
w ##Class(Config.MapPackages).Create(namespace, packageNm, .prop)
削除
s namespace = "SAMPLE"
s packageNm = "sample"
w ##Class(Config.MapPackages).Delete(namespace, packageNm)
検索
s namespace = "SAMPLE"
s rs=##class(%ResultSet).%New("Config.MapPackages:List")
d rs.Execute(namespace)
while( rs.%Next() ){ w !,rs.Name }
d rs.Close() k rs
状態の確認
対象のデータベースが、現在どのような状態にあるかを確認します。
s db = ##class(SYS.Database).%OpenId("D:\IRISDB\NEWDB")
w db.GetStatus()
> Mounted/RW
戻り値は下記リストになります。
- Unmounted
- Dismounted
- Expanding
- ClusterMounted/R
- ClusterMounted/RW
- Mounted/R
- Mounted/RW
おわりに
データベースを操作するコマンドは、まだまだたくさんあります。
※詳しくはドキュメントを参照して下さい。
今回上げたコマンドは、管理ポータル上でもよく操作するコマンドではないでしょうか。
これらをコマンドで操作する事で、定期的なデータベースの切り替え等がコマンドで簡単に行えるようになります。
工夫次第でかなり便利になるコマンドです。
是非活用してみて下さい!