シェル・ユーティリティ・コマンド
次の各項では、"java -jar" <kvhome>/lib/sql.jar <command>"
を介してアクセスするユーティリティ・コマンドについて説明します。
シェルのインタラクティブ・プロンプトは次のとおりです。
sql->
シェルは、複数のコマンドで構成されています。すべてのコマンドで次のフラグを使用できます。
-
-help
コマンドのオンライン・ヘルプを表示します。
-
?
-helpと同じ意味です。コマンドのオンライン・ヘルプを表示します。
シェル・コマンドの一般的な形式は次のとおりです。
-
コマンドはすべて、次のような構造になります。
sql-> command [arguments]
-
引数はすべて、"-"で始まるフラグを使用して指定します
-
コマンドとサブコマンドでは大/小文字は区別されず、可能な場合は一部の文字列(接頭辞)で照合されます。ただし、引数では大/小文字が区別されます。
connect
connect -host <hostname> -port <port> -name <storeName>
[-timeout <timeout ms>]
[-consistency <NONE_REQUIRED(default) |
ABSOLUTE | NONE_REQUIRED_NO_MASTER>]
[-durability <COMMIT_SYNC(default) |
COMMIT_NO_SYNC | COMMIT_WRITE_NO_SYNC>]
[-username <user>] [-security <security-file-path>]
KVStoreに接続し、データ・アクセス機能を実行します。インスタンスが保護されている場合、ログイン資格証明を入力する必要がある可能性があります。
consistency
consistency [[NONE_REQUIRED | NONE_REQUIRED_NO_MASTER |
ABSOLUTE] [-time -permissible-lag <time_ms> -timeout <time_ms>]]
このセッションで使用される読取り一貫性を構成します。
describe
describe | desc [as json]
{table table_name [field_name[,...] ] |
index index_name on table_name
}
表または索引に関する情報を記述します。オプションでJSON形式を使用できます。
table_name
を次のように指定します。
エントリ指定 | 説明 |
---|---|
table_name |
必須。表の完全な名前を指定します。それ以上の修飾子がない場合、このエントリはデフォルトのネームスペース(sysdefault)に作成された表を示します。このネームスペースを指定する必要はありません。 |
parent-table.child-table |
親の子表を指定します。親表、ピリオド(.)、子の名前の順に指定します。たとえば、親表がUsers の場合、MailingAddress という名前の子表はUsers.MailingAddress と指定します。
|
|
デフォルト以外のネームスペースに作成された表を指定します。ネームスペースの後にコロン(:)を付けて使用します。たとえば、Sales ネームスペースに作成されたUsers 表を参照するには、table_nameをSales:Users のように入力します。
|
ns1:t1
に対するdescribe
の出力を示します。 sql-> describe table ns1:t1;
=== Information ===
+-----------+------+-----+-------+----------+----------+--------+----------+---------+-------------+
| namespace | name | ttl | owner | sysTable | r2compat | parent | children | indexes | description |
+-----------+------+-----+-------+----------+----------+--------+----------+---------+-------------+
| ns1 | t1 | | | N | N | | | | |
+-----------+------+-----+-------+----------+----------+--------+----------+---------+-------------+
=== Fields ===
+----+------+---------+----------+-----------+----------+------------+----------+
| id | name | type | nullable | default | shardKey | primaryKey | identity |
+----+------+---------+----------+-----------+----------+------------+----------+
| 1 | id | Integer | N | NullValue | Y | Y | |
+----+------+---------+----------+-----------+----------+------------+----------+
| 2 | name | String | Y | NullValue | | | |
+----+------+---------+----------+-----------+----------+------------+----------+
sql->
describe as json
を使用しています。 sql-> describe as json table ns1:t1;
{
"json_version" : 1,
"type" : "table",
"name" : "t1",
"namespace" : "ns1",
"shardKey" : [ "id" ],
"primaryKey" : [ "id" ],
"fields" : [ {
"name" : "id",
"type" : "INTEGER",
"nullable" : false,
"default" : null
}, {
"name" : "name",
"type" : "STRING",
"nullable" : true,
"default" : null
} ]
}
durability
durability [[COMMIT_WRITE_NO_SYNC | COMMIT_SYNC |
COMMIT_NO_SYNC] | [-master-sync <sync-policy> -replica-sync <sync-policy>
-replica-ask <ack-policy>]] <sync-policy>: SYNC, NO_SYNC, WRITE_NO_SYNC
<ack-policy>: ALL, NONE, SIMPLE_MAJORITY
このセッションで使用される書込み永続性を構成します。
history
history [-last <n>] [-from <n>] [-to <n>]
コマンド履歴を表示します。デフォルトではすべての履歴が表示されます。表示範囲の選択にはオプションのフラグが使用されます。
import
import -table table_name -file file_name [JSON | CSV]
指定されたファイルからtable_name
表にレコードをインポートします。
table_name
を次のように指定します。
エントリ指定 | 説明 |
---|---|
table_name |
必須。表の完全な名前を指定します。それ以上の修飾子がない場合、このエントリはデフォルトのネームスペース(sysdefault)に作成された表を示します。このネームスペースを指定する必要はありません。 |
parent-table.child-table |
親の子表を指定します。親表、ピリオド(.)、子の名前の順に指定します。たとえば、親表がUsers の場合、MailingAddress という名前の子表はUsers.MailingAddress と指定します。
|
|
デフォルト以外のネームスペースに作成された表を指定します。ネームスペースの後にコロン(:)を付けて使用します。たとえば、Sales ネームスペースに作成されたUsers 表を参照するには、table_nameをSales:Users のように入力します。
|
-table
を使用して、レコードがロードされる表の名前を指定します。表を指定するもう1つの方法は、ファイル内のレコードの前に、表指定"Table: table_name
"を追加することです。
たとえば、このファイルには、users
およびemail
という2つの表に挿入するレコードが含まれています。
Table: users
<records of users>
...
Table: emails
<record of emails>
...
インポートされたレコードは、JSON形式またはCSV形式のいずれかになります。形式を指定しない場合、JSONであると想定されます。
load
load -file <path to file>
指定したファイルをロードし、その内容を実行するコマンドのスクリプトとして解釈します。スクリプト内のいずれかのコマンドが実行に失敗すると、実行が終了します。
たとえば、スクリプト・ファイルtest.sql
に次のコマンドが収集されているとします。
### Begin Script ###
load -file test.ddl
import -table users -file users.json
### End Script ###
ファイルtest.ddl
には次のような内容が含まれています。
DROP TABLE IF EXISTS users;
CREATE TABLE users(id INTEGER, firstname STRING, lastname STRING,
age INTEGER, primary key (id));
また、ファイルusers.json
には次のような内容が含まれています。
{"id":1,"firstname":"Dean","lastname":"Morrison","age":51}
{"id":2,"firstname":"Idona","lastname":"Roman","age":36}
{"id":3,"firstname":"Bruno","lastname":"Nunez","age":49}
スクリプトを実行するには、シェルでload
コマンドを使用します。
> java -jar KVHOME/lib/sql.jar -helper-hosts node01:5000 \
-store kvstore
sql-> load -file ./test.sql
Statement completed successfully.
Statement completed successfully.
Loaded 3 rows to users.
mode
mode [COLUMN | LINE | JSON [-pretty] | CSV]
問合せ結果の出力モードを設定します。デフォルト値はJSONです。
たとえば、COLUMNモードで表示される表は次のようになります。
sql-> mode column;
sql-> SELECT * from users;
+-----+-----------+-----------+-----+
| id | firstname | lastname | age |
+-----+-----------+-----------+-----+
| 8 | Len | Aguirre | 42 |
| 10 | Montana | Maldonado | 40 |
| 24 | Chandler | Oneal | 25 |
| 30 | Pascale | Mcdonald | 35 |
| 34 | Xanthus | Jensen | 55 |
| 35 | Ursula | Dudley | 32 |
| 39 | Alan | Chang | 40 |
| 6 | Lionel | Church | 30 |
| 25 | Alyssa | Guerrero | 43 |
| 33 | Gannon | Bray | 24 |
| 48 | Ramona | Bass | 43 |
| 76 | Maxwell | Mcleod | 26 |
| 82 | Regina | Tillman | 58 |
| 96 | Iola | Herring | 31 |
| 100 | Keane | Sherman | 23 |
+-----+-----------+-----------+-----+
...
100 rows returned
空の文字列は、空のセルとして表示されます。
sql-> mode column;
sql-> SELECT * from tab1 where id = 1;
+----+------+----+------+
| id | s1 | s2 | s3 |
+----+------+----+------+
| 1 | NULL | | NULL |
+----+------+----+------+
1 row returned
ネストされた表の場合は、columnモードでネストを示すためにインデントが使用されます。
sql-> SELECT * from nested;
+----+-------+------------------------------------------------------------+
| id | name | details |
+----+-------+------------------------------------------------------------+
| 1 | one | address |
| | | city | Waitakere |
| | | country | French Guiana |
| | | zipcode | 7229 |
| | | attributes |
| | | color | blue |
| | | price | expensive |
| | | size | large |
| | | phone | [(08)2435-0742, (09)8083-8862, (08)0742-2526]|
+----+-------+------------------------------------------------------------+
| 3 | three | address |
| | | city | Viddalba |
| | | country | Bhutan |
| | | zipcode | 280071 |
| | | attributes |
| | | color | blue |
| | | price | cheap |
| | | size | small |
| | | phone | [(08)5361-2051, (03)5502-9721, (09)7962-8693]|
+----+-------+------------------------------------------------------------+
...
たとえば、結果が縦に表示され、各行に1つの値が表示されるLINEモードの表は、次のようになります。
sql-> mode line;
sql-> SELECT * from users;
> Row 1
+-----------+-----------+
| id | 8 |
| firstname | Len |
| lastname | Aguirre |
| age | 42 |
+-----------+-----------+
> Row 2
+-----------+-----------+
| id | 10 |
| firstname | Montana |
| lastname | Maldonado |
| age | 40 |
+-----------+-----------+
> Row 3
+-----------+-----------+
| id | 24 |
| firstname | Chandler |
| lastname | Oneal |
| age | 25 |
+-----------+-----------+
...
100 rows returned
COLUMNモードと同様に、空の文字列は空のセルとして表示されます。
sql-> mode line;
sql-> SELECT * from tab1 where id = 1;
> Row 1
+---------+------+
| id | 1 |
| s1 | NULL |
| s2 | |
| s3 | NULL |
+---------+------+
1 row returned
たとえば、JSONモードで表示される表は次のようになります。
sql-> mode json;
sql-> SELECT * from users;
{"id":8,"firstname":"Len","lastname":"Aguirre","age":42}
{"id":10,"firstname":"Montana","lastname":"Maldonado","age":40}
{"id":24,"firstname":"Chandler","lastname":"Oneal","age":25}
{"id":30,"firstname":"Pascale","lastname":"Mcdonald","age":35}
{"id":34,"firstname":"Xanthus","lastname":"Jensen","age":55}
{"id":35,"firstname":"Ursula","lastname":"Dudley","age":32}
{"id":39,"firstname":"Alan","lastname":"Chang","age":40}
{"id":6,"firstname":"Lionel","lastname":"Church","age":30}
{"id":25,"firstname":"Alyssa","lastname":"Guerrero","age":43}
{"id":33,"firstname":"Gannon","lastname":"Bray","age":24}
{"id":48,"firstname":"Ramona","lastname":"Bass","age":43}
{"id":76,"firstname":"Maxwell","lastname":"Mcleod","age":26}
{"id":82,"firstname":"Regina","lastname":"Tillman","age":58}
{"id":96,"firstname":"Iola","lastname":"Herring","age":31}
{"id":100,"firstname":"Keane","lastname":"Sherman","age":23}
{"id":3,"firstname":"Bruno","lastname":"Nunez","age":49}
{"id":14,"firstname":"Thomas","lastname":"Wallace","age":48}
{"id":41,"firstname":"Vivien","lastname":"Hahn","age":47}
...
100 rows returned
空の文字列は、""として表示されます。
sql-> mode json;
sql-> SELECT * from tab1 where id = 1;
{"id":1,"s1":null,"s2":"","s3":"NULL"}
1 row returned
最後に、CSVモードで表示される表は次のようになります。
sql-> mode csv;
sql-> SELECT * from users;
8,Len,Aguirre,42
10,Montana,Maldonado,40
24,Chandler,Oneal,25
30,Pascale,Mcdonald,35
34,Xanthus,Jensen,55
35,Ursula,Dudley,32
39,Alan,Chang,40
6,Lionel,Church,30
25,Alyssa,Guerrero,43
33,Gannon,Bray,24
48,Ramona,Bass,43
76,Maxwell,Mcleod,26
82,Regina,Tillman,58
96,Iola,Herring,31
100,Keane,Sherman,23
3,Bruno,Nunez,49
14,Thomas,Wallace,48
41,Vivien,Hahn,47
...
100 rows returned
JSONモードの場合と同様に、空の文字列は""と表示されます。
sql-> mode csv;
sql-> SELECT * from tab1 where id = 1;
1,NULL,"","NULL"
1 row returned
ノート:
CSV形式で表示できるのは、単純なタイプの値を含む行のみです。ネストされた値はサポートされません。
page
page [on | <n> | off]
問合せの出力ページ番号のオンとオフを切り替えます。n
が指定されると、ページの高さとして使用されます。
n
が0の場合、またはonが指定された場合は、デフォルトのページ高さが使用されます。n
をoffに設定すると、ページ番号がオフになります。
show ddl
show ddl <table>
show ddl
問合せは、指定された表のDDL文を取得します。表に索引がある場合、文は表と索引のDDLを返します。
例: 指定した表のDDLをフェッチします。
BaggageInfo
表のDDLをフェッチします。show ddl BaggageInfo;
CREATE TABLE IF NOT EXISTS BaggageInfo (ticketNo LONG, fullName STRING, gender STRING,
contactPhone STRING, confNo STRING, bagInfo JSON, PRIMARY
KEY(SHARD(ticketNo)))
fixedschema_contact
索引がBaggageInfo
表に存在しています。この文は、BaggageInfo
表のDDLおよび表のfixedschema_contact
索引を取得します。show ddl BaggageInfo;
CREATE TABLE IF NOT EXISTS BaggageInfo (ticketNo LONG, fullName STRING, gender STRING,
contactPhone STRING, confNo STRING, bagInfo JSON, PRIMARY
KEY(SHARD(ticketNo)))CREATE INDEX IF NOT EXISTS fixedschema_contact ON
BaggageInfo(contactPhone)
show indexes
show_indexes_statement ::= SHOW [AS JSON] INDEXES ON table_name
show indexes
文は、指定した表に存在する索引のリストを提供します。パラメータ AS JSON
はオプションであり、出力をJSON形式にする場合に指定できます。
例1: 指定した表の索引をリストします
users2
表に存在する索引をリストします。SHOW INDEXES ON users2;
indexes
idx1
例2: 指定した表の索引をJSON形式でリストします
users2
表に存在する索引をJSON形式でリストします。SHOW AS JSON INDEXES ON users2;
{"indexes" :
["idx1"]
}
show namespaces
show [AS JSON] namespaces
システム内のすべてのネームスペースのリストを表示します。
たとえば:
sql-> show namespaces
namespaces
ns1
sysdefault
sql-> show as json namespaces
{"namespaces" : ["ns1","sysdefault"]}
show query
show query <statement>
問合せの問合せ計画を表示します。
たとえば:
sql-> show query SELECT * from Users;
RECV([6], 0, 1, 2, 3, 4)
[
DistributionKind : ALL_PARTITIONS,
Number of Registers :7,
Number of Iterators :12,
SFW([6], 0, 1, 2, 3, 4)
[
FROM:
BASE_TABLE([5], 0, 1, 2, 3, 4)
[Users via primary index] as $$Users
SELECT:
*
]
]
show regions
show_regions_statement ::= SHOW [AS JSON] REGIONS
show regions
文は、複数リージョンのOracle NoSQL Database設定に存在するリージョンのリストを提供します。パラメータ AS JSON
はオプションであり、出力をJSON形式にする場合に指定できます。
SHOW REGIONS;
regions
my_region1 (remote, active)
my_region2 (remote, active)
SHOW AS JSON REGIONS;
{"regions" : [
{"name" : "my_region1", "type" : "remote", "state" : "active"},
{"name" : "my_region2", "type" : "remote", "state" : "active"}
]}
show tables
show [as json] {tables | table table_name}
データ・ストア内のすべての表または特定の1つの表(table_name)を表示します。
table_name
を次のように指定します。
エントリ指定 | 説明 |
---|---|
table_name |
必須。表の完全な名前を指定します。それ以上の修飾子がない場合、このエントリはデフォルトのネームスペース(sysdefault)に作成された表を示します。このネームスペースを指定する必要はありません。 |
parent-table.child-table |
親の子表を指定します。親表、ピリオド(.)、子の名前の順に指定します。たとえば、親表がUsers の場合、MailingAddress という名前の子表はUsers.MailingAddress と指定します。
|
|
デフォルト以外のネームスペースに作成された表を指定します。ネームスペースの後にコロン(:)を付けて使用します。たとえば、Sales ネームスペースに作成されたUsers 表を参照するには、table_nameをSales:Users のように入力します。
|
次の例は、すべての表または1つの表のみをリストする方法を示しています。空のtableHierarchy
フィールドは、表t1
がデフォルトのネームスペースに作成されていることを示しています。
sql-> show tables
tables
SYS$IndexStatsLease
SYS$PartitionStatsLease
SYS$SGAttributesTable
SYS$TableStatsIndex
SYS$TableStatsPartition
ns10:t10
parent
parent.child
sg1
t1
sql-> show table t1
tableHierarchy
t1
table_name
を完全修飾します。この場合、tableHierarchy
フィールドには、表t1
が作成されたネームスペースns1
がリストされます。この例では、表がjson形式でどのように表示されるかも示しています。
sql-> show tables;
tables
SYS$IndexStatsLease
SYS$PartitionStatsLease
SYS$SGAttributesTable
SYS$TableStatsIndex
SYS$TableStatsPartition
ns1:foo
ns1:t1
sql-> show table ns1:t1;
tableHierarchy(namespace ns1)
t1
sql-> show as json table ns1:t1;
{"namespace": "ns1"
"tableHierarchy" : ["t1"]}
timeout
timeout [<timeout_ms>]
timeout
コマンドは、このセッションのリクエスト・タイムアウトをミリ秒(ms)単位で構成または表示します。
リクエスト・タイムアウトは、クライアントが送信したリクエストへのレスポンスを取得するまで待機する時間です。
オプションのtimeout_ms
属性を指定した場合、リクエスト・タイムアウトは指定した値に設定されます。
オプションのtimeout_ms
属性を指定しない場合は、リクエスト・タイムアウトの現在の値が表示されます。
例A-1 タイムアウト
次の例では、リクエスト・タイムアウトの現在の値を取得します。
sql-> timeout
Request timeout used: 5,000ms
例A-2 タイムアウト
次の例では、リクエスト・タイムアウト値を20000ミリ秒(20秒)に設定します。
sql-> timeout 20000
Request timeout used: 20,000ms
ノート:
1つのシェル・コマンドで、1つ以上のサーバーに対する複数のリクエストが必要になる場合があります。タイムアウトは、このような個々のリクエストに適用されます。シェル・コマンドは、複数のリクエストを送信し、コマンドが完了する前に、各リクエストが戻るまで待機する必要があります。その結果、シェル・コマンドが指定されたタイムアウトよりも長い時間待機することが必要になることがあり、また、この合計待機時間が個々のリクエストの待機時間を超えることがあります。
timer
timer [on | off]
コマンドの実行時間の計測と表示のオンとオフを切り替えます。指定しない場合は、timer
の現在の状態が表示されます。たとえば:
sql-> timer on
sql-> SELECT * from users where id <= 10 ;
+----+-----------+-----------+-----+
| id | firstname | lastname | age |
+----+-----------+-----------+-----+
| 8 | Len | Aguirre | 42 |
| 10 | Montana | Maldonado | 40 |
| 6 | Lionel | Church | 30 |
| 3 | Bruno | Nunez | 49 |
| 2 | Idona | Roman | 36 |
| 4 | Cooper | Morgan | 39 |
| 7 | Hanae | Chapman | 50 |
| 9 | Julie | Taylor | 38 |
| 1 | Dean | Morrison | 51 |
| 5 | Troy | Stuart | 30 |
+----+-----------+-----------+-----+
10 rows returned
Time: 0sec 98ms