コンテンツにスキップ

machcli

Since v8.0.75

machcliモジュールは、JSHアプリケーションからMachbaseデータベースを使用するクライアントAPIを提供します。

Client

データベースクライアントを作成します。

構文
new Client(config)
設定フィールド
  • host (既定値: 127.0.0.1)
  • port (既定値: 5656)
  • user (既定値: sys)
  • password (既定値: manager)
  • alternativeHost (省略可能)
  • alternativePort (省略可能)
  • database (省略可能): 複数データベース環境で接続する対象データベース(別名:dbSince v8.7.0
使用例
1
2
const { Client } = require('machcli');
const db = new Client({ host: '127.0.0.1', port: 5656, user: 'sys', password: 'manager' });
複数データベースの例

クライアントの作成時にdatabaseを指定すると、接続する対象データベースを選択できます。dbdatabaseの別名です。 Since v8.7.0

1
2
3
4
5
6
7
8
9
const { Client } = require('machcli');
const db = new Client({
    host: '127.0.0.1',
    port: 5656,
    user: 'sys',
    password: 'manager',
    db: 'MACHBASEDB',
});
const conn = db.connect();

Client.connect()

接続を開き、Connectionオブジェクトを返します。

構文
connect()

Client.close()

内部のデータベースクライアントを閉じます。

構文
close()

Client.user()

設定したユーザー名を大文字で返します。

構文
user()

Client.normalizeTableName()

テーブル名を[database, user, table]形式に正規化します。

構文
normalizeTableName(tableName)

Client.tx()

Since v8.7.0

プールから取得した接続でトランザクションを開始し、その中でfnを実行します。fnが正常に戻るとコミットし、例外をスローするとロールバックして例外を再スローします。fnにはそのトランザクションにバインドされたConnectionが渡されるため、このオブジェクトのquery()queryRow()exec()は同じトランザクション内で実行されます。

⚠️
トランザクションは、CREATE TABLEで作成した通常のトランザクションテーブルでのみ動作します。ログテーブル(CREATE LOG TABLE)とタグテーブル(CREATE TAG TABLE)はトランザクションに対応していません。tx()内でこれらのテーブルにexec()query()を実行すると、MACHCLI-ERR-2362などのエラーが発生します。
構文
tx(fn)
使用例
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
const { Client } = require('machcli');
const db = new Client({ host: '127.0.0.1', port: 5656, user: 'sys', password: 'manager' });
const conn = db.connect();
conn.exec('CREATE TABLE IF NOT EXISTS TX_SAMPLE (ID LONG, NAME VARCHAR(100))');

// fnが正常に戻ると、自動的にコミットします。
db.tx(function (tx) {
    tx.exec('INSERT INTO TX_SAMPLE VALUES(?, ?)', 1, 'committed');
});

// fnが例外をスローすると、ロールバックして例外を再スローします。
try {
    db.tx(function (tx) {
        tx.exec('INSERT INTO TX_SAMPLE VALUES(?, ?)', 2, 'rolledback');
        throw new Error('abort');
    });
} catch (e) {
    console.println('rolled back:', e.message);
}
conn.close();
db.close();

Connection

Client.connect()が返す接続オブジェクトです。

Connection.query()

検索SQLを実行し、Rowsオブジェクトを返します。paramsには、?の位置パラメーター用の可変長引数を渡します。 または、:keyの名前付きパラメーター用に{ key: value, ... }オブジェクトを渡せます Since v8.7.0 .

構文
query(sql[, ...params])
使用例
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
const { Client } = require('machcli');
var db, conn, rows;
const conf = {
    host: '127.0.0.1',
    port: 5656,
    user: 'sys',
    password: 'manager' 
};
try {
    db = new Client(conf);
    conn = db.connect();

    // 位置パラメーター
    rows = conn.query('SELECT NAME, TIME, VALUE FROM TAG LIMIT ?', 1);
    for (const row of rows) {
        console.println(row.NAME, row.TIME, row.VALUE);
    }
    rows.close();

    // 名前付きパラメーター
    rows = conn.query('SELECT NAME, TIME, VALUE FROM TAG WHERE NAME = :name ORDER BY TIME LIMIT :one', { name: 'jsh', one: 1 });
    for (const row of rows) {
        console.println(row.NAME, row.TIME, row.VALUE);
    }
    rows.close();
} catch( e ) {
    console.println("ERROR", e.message);
}
db && db.close();

Connection.queryRow()

検索SQLを実行し、単一行のオブジェクトを返します。

返されるオブジェクトには、_ROWNUMと各列名がプロパティとして含まれます。

構文
queryRow(sql[, ...params])

Connection.exec()

DDL/DMLを実行し、結果オブジェクトを返します。

返されるフィールド:

  • rowsAffected
  • message
構文
exec(sql[, ...params])

Connection.explain()

実行計画の文字列を返します。

構文
explain(sql[, ...params])

Connection.append()

一括挿入用のAppenderオブジェクトを作成します。

返されるAppenderは、append()flush()close()などのメソッドに対応しています。

構文
append(tableName)
使用例
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
const { Client } = require('machcli');
const db = new Client({ host: '127.0.0.1', port: 5656, user: 'sys', password: 'manager' });
const conn = db.connect();
const appender = conn.append('TAG');
appender.append('sensor-1', new Date(), 12.34);
appender.flush();
const result = appender.close();
console.println(result);
conn.close();
db.close();

Connection.tx()

Since v8.7.0

この接続でトランザクションを開始し、その中でfnを実行します。コミット・ロールバックの動作はClient.tx()と同じです。Client.connect()が返した接続など、確保済みの接続でトランザクションを実行する場合に使用します。

⚠️
トランザクションは、CREATE TABLEで作成した通常のトランザクションテーブルでのみ動作します。ログテーブル(CREATE LOG TABLE)とタグテーブル(CREATE TAG TABLE)はトランザクションに対応していません。tx()内でこれらのテーブルにexec()query()を実行すると、MACHCLI-ERR-2362などのエラーが発生します。
構文
tx(fn)
使用例
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
const { Client } = require('machcli');
const db = new Client({ host: '127.0.0.1', port: 5656, user: 'sys', password: 'manager' });
const conn = db.connect();
conn.exec('CREATE TABLE IF NOT EXISTS TX_SAMPLE (ID LONG, NAME VARCHAR(100))');

conn.tx(function (tx) {
    tx.exec('INSERT INTO TX_SAMPLE VALUES(?, ?)', 1, 'committed');
});

conn.close();
db.close();

Connection.close()

接続を閉じます。

構文
close()

Rows

Connection.query()が返す結果セットオブジェクトです。

Rows.message

クエリの実行結果メッセージです。

Rows.isFetchable()

行を取得できる結果かどうかを返します。

構文
isFetchable()

Rows.next()

イテレーターの結果オブジェクトを返します。

  • 行がある場合は{ value: Row, done: false }
  • 完了した場合は{ done: true }
構文
next()

Rows.close()

結果セットを閉じます。

構文
close()

Row

取得した行を表すオブジェクトです。

  • 各列には、row.COLUMN_NAMEでアクセスできます。
  • for...ofによる反復処理に対応しています。

queryDatabaseId()

マウントしたデータベースのバックアップ表領域IDを返します。

  • 既定のDB(''またはMACHBASEDB)では-1を返す
  • データベースが存在しない場合は、例外を発生させます。
構文
queryDatabaseId(conn, dbName)

queryTableType()

正規化したテーブル名のトークンから、テーブル型コードを返します。

構文
queryTableType(conn, names)

TableType

stringTableType()

テーブル型の定数と文字列変換関数です。

TableTypeの値
  • Log, Fixed, Volatile, Lookup, KeyValue, Tag
構文
stringTableType(type)

TableFlag

stringTableFlag()

テーブルフラグの定数と文字列変換関数です。

TableFlagの値
  • None, Data, Rollup, Meta, Stat
構文
stringTableFlag(flag)

stringTableDescription()

テーブルの型とフラグを組み合わせた説明文字列を返します。

構文
stringTableDescription(type, flag)

ColumnType

stringColumnType()

列型の定数と文字列変換関数です。

主なColumnTypeの値
  • Short, UShort, Integer, UInteger, Long, ULong
  • Float, Double, Varchar, Text, Clob, Blob, Binary
  • Datetime, IPv4, IPv6, JSON
構文
stringColumnType(columnType)

columnWidth()

列型の既定の表示幅を返します。

構文
columnWidth(columnType, length)

ColumnFlag

stringColumnFlag()

列フラグの定数と文字列変換関数です。

ColumnFlagの値
  • TagName
  • Basetime
  • Summarized
  • MetaColumn
構文
stringColumnFlag(flag)
最終更新日