machsql の最初の操作
対話型 SQL コマンドラインツール machsql の、日常的に使用するコマンドと操作を説明します。
machsql とは
Machbase の対話型 SQL クライアントで、次の操作ができます。
- SQL クエリーの実行
- テーブルとユーザーの管理
- システム情報の確認
- データのインポートとエクスポート
接続
基本の接続
machsql次の入力を求められます。
- サーバーアドレス(既定値:127.0.0.1)
- ユーザー ID(既定値:SYS)
- パスワード(既定値:MANAGER)
パラメーターを指定した接続
接続情報を引数で指定すると、対話入力を省略できます。
machsql -s localhost -u SYS -p MANAGER主なオプション:
machsql -s 192.168.1.100 # リモートサーバーへ接続
machsql -u myuser -p mypass # 認証情報を指定
machsql -P 7878 # 別のポートを使用
machsql -f script.sql # SQL スクリプトを実行基本コマンド
SHOW コマンド
システム情報を表示します。
-- 全テーブルを一覧
SHOW TABLES;
-- テーブル構造を表示
SHOW TABLE sensor_data;
-- インデックス一覧
SHOW INDEXES;
-- ユーザー一覧
SHOW USERS;
-- ライセンス情報
SHOW LICENSE;
-- ディスク使用量を確認
SHOW STORAGE;
-- テーブルスペース一覧
SHOW TABLESPACES;
-- 実行中のクエリーを確認
SHOW STATEMENTS;テーブルの作成
-- 単純な Log テーブル
CREATE TABLE app_logs (
level VARCHAR(10),
message VARCHAR(1000)
);
-- センサーデータのテーブル
CREATE TABLE temperatures (
sensor_id VARCHAR(20),
value DOUBLE
);
-- 複数列のテーブル
CREATE TABLE device_data (
device_id INTEGER,
location VARCHAR(50),
temperature DOUBLE,
humidity DOUBLE,
pressure DOUBLE
);データの挿入
-- 1 行を挿入
INSERT INTO temperatures VALUES ('sensor01', 25.3);
-- 複数行を挿入
INSERT INTO app_logs VALUES ('INFO', 'Application started');
INSERT INTO app_logs VALUES ('WARN', 'High memory usage detected');
INSERT INTO app_logs VALUES ('ERROR', 'Connection timeout');データの検索
-- 全レコードを取得
SELECT * FROM temperatures;
-- タイムスタンプを指定
SELECT _arrival_time, * FROM temperatures;
-- 条件を指定
SELECT * FROM app_logs WHERE level = 'ERROR';
-- 最近のデータ(直近 10 分)
SELECT * FROM temperatures DURATION 10 MINUTE;
-- 指定時刻範囲のデータ
SELECT * FROM temperatures
DURATION 30 MINUTE BEFORE 1 HOUR;
-- 集計
SELECT sensor_id, AVG(value), MAX(value), MIN(value)
FROM temperatures
GROUP BY sensor_id;
-- レコードを数える
SELECT COUNT(*) FROM app_logs;データの削除
-- 最も古い 100 行を削除
DELETE FROM app_logs OLDEST 100 ROWS;
-- 最新 1000 行を残す
DELETE FROM app_logs EXCEPT 1000 ROWS;
-- 7 日より古いデータを削除
DELETE FROM app_logs EXCEPT 7 DAY;
-- 指定日より前を削除
DELETE FROM app_logs
BEFORE TO_DATE('2025-01-01', 'YYYY-MM-DD');テーブルの管理
-- インデックスを作成
CREATE INDEX idx_sensor ON temperatures(sensor_id);
-- TRUNCATE で全データを削除
TRUNCATE TABLE app_logs;
-- テーブルを削除
DROP TABLE temperatures;_arrival_time
Log テーブルの各レコードには、自動的に時刻が付加されます。
SELECT _arrival_time, * FROM temperatures;出力:
_arrival_time SENSOR_ID VALUE
--------------------------------------------------------
2025-10-10 14:23:45 123:456:789 sensor01 25.3
2025-10-10 14:23:40 987:654:321 sensor01 24.8タイムスタンプはナノ秒精度です。
時刻範囲の操作
DURATION キーワード
DURATION で時刻条件を簡単に記述できます。
-- 直近 5 分
SELECT * FROM temperatures DURATION 5 MINUTE;
-- 直近 1 時間
SELECT * FROM temperatures DURATION 1 HOUR;
-- 直近 1 日
SELECT * FROM temperatures DURATION 1 DAY;
-- 2 時間前を終点とする、その直前の 30 分間
SELECT * FROM temperatures
DURATION 30 MINUTE BEFORE 2 HOUR;テキスト検索
列内のテキストを検索します。
-- SEARCH の前にキーワードインデックスを作成
CREATE INDEX idx_message ON app_logs(message) INDEX_TYPE KEYWORD;
-- error を含むログを検索
SELECT * FROM app_logs
WHERE message SEARCH 'error';
-- timeout または connection を含むログ
SELECT * FROM app_logs
WHERE message SEARCH 'timeout'
OR message SEARCH 'connection';
-- high と memory の両方を含むログ
SELECT * FROM app_logs
WHERE message SEARCH 'high memory';SQL スクリプトの実行
SQL を記述したファイルを実行します。
machsql -f setup.sqlmachsql 内から実行する場合:
@/path/to/script.sql結果のエクスポート
結果をファイルに保存します。
# CSV に出力
machsql -s localhost -u SYS -p MANAGER \
-f query.sql -o output.csv -r csv
# JSON に出力
machsql -s localhost -u SYS -p MANAGER \
-f query.sql -o output.json -r json便利な操作
1.コマンド履歴
矢印キーで履歴を移動します。
↑:前のコマンド↓:次のコマンド
2.自動補完
Tab で次を補完できます。
- テーブル名
- 列名
- SQL キーワード
3.複数行クエリー
SQL は複数行に分けて入力できます。
SELECT
sensor_id,
AVG(value) as avg_temp,
MAX(value) as max_temp
FROM
temperatures
WHERE
_arrival_time BETWEEN TO_DATE('2025-10-10 14:00:00', 'YYYY-MM-DD HH24:MI:SS')
AND TO_DATE('2025-10-10 15:00:00', 'YYYY-MM-DD HH24:MI:SS')
GROUP BY
sensor_id;4.出力の抑制
スクリプトではバナーを省略できます。
machsql -i # または --silent5.タイムゾーンの設定
machsql -z +0900 # 韓国のタイムゾーン
machsql -z -0500 # 米国東部主な操作手順
日常の監視
-- 最近のエラーを確認
SELECT * FROM app_logs
WHERE level = 'ERROR'
DURATION 1 DAY;
-- センサーの状態を監視
SELECT sensor_id, COUNT(*), AVG(value)
FROM temperatures
DURATION 1 HOUR
GROUP BY sensor_id;
-- DB サイズを確認
SHOW STORAGE;データの整理
-- 直近 30 日だけを残す
DELETE FROM app_logs EXCEPT 30 DAY;
-- 古いセンサーデータを削除
DELETE FROM temperatures EXCEPT 7 DAY;性能の確認
-- 実行中のクエリーを表示
SHOW STATEMENTS;
-- インデックスの状態を確認
SHOW INDEXES;
-- インデックス構築の進捗を確認
SHOW INDEXGAP;ユーザー管理
-- ユーザーを作成
CREATE USER datauser IDENTIFIED BY 'password123';
-- 権限を付与
GRANT SELECT ON temperatures TO datauser;
GRANT INSERT ON temperatures TO datauser;
-- パスワードを変更
ALTER USER datauser IDENTIFIED BY 'newpassword';
-- ユーザーを削除
DROP USER datauser;キーボードショートカット
| キー | 操作 |
|---|---|
Ctrl+C | 現在のクエリーを取り消す |
Ctrl+D | machsql を終了 |
Ctrl+L | 画面を消去 |
↑ / ↓ | コマンド履歴を移動 |
Tab | 自動補完 |
ヘルプ
machsql 内で実行します。
-- ヘルプを表示
help
-- コマンド構文を表示
help CREATE TABLE
help SELECT
help DELETEトラブルシューティング
接続の失敗
# サーバーの稼働を確認
machadmin -e
# ポートが開いているか確認
netstat -an | grep 5656クエリータイムアウト
# machbase.conf に設定し、サーバーを再起動
SESSION_QUERY_TIMEOUT_SEC = 300メモリ不足
-- 結果件数を制限
SELECT * FROM large_table LIMIT 1000;
-- 元データの代わりに集計を使用
SELECT COUNT(*), AVG(value) FROM large_table;次のステップ
基本操作の後は、次を参照してください。
- 基本概念:テーブル型と構成
- テーブルの種類:データに合う型の選択
- SQL リファレンス:構文の詳細
クイックリファレンス
-- テーブル操作
SHOW TABLES;
SHOW TABLE tablename;
CREATE TABLE t (col TYPE);
DROP TABLE t;
-- データ操作
INSERT INTO t VALUES (...);
SELECT * FROM t;
SELECT * FROM t DURATION 10 MINUTE;
DELETE FROM t EXCEPT 7 DAY;
-- システム情報
SHOW LICENSE;
SHOW STORAGE;
SHOW USERS;
-- 時刻検索
DURATION 5 MINUTE
DURATION 1 HOUR
DURATION 1 DAY
DURATION 30 MINUTE BEFORE 2 HOUR
-- テキスト検索
CREATE INDEX idx_col ON t(column) INDEX_TYPE KEYWORD;
WHERE column SEARCH 'text'手元のデータでも操作を試し、machsql に慣れてください。
最終更新日