コンテンツにスキップ

CLI

Terminal window
npm install -g @petradb/cli
Terminal window
petradb [OPTIONS] [path]

パスが指定された場合、CLIはその場所に永続データベースを開く(または作成する)します。パスなしの場合、インメモリデータベースが使用されます。

オプション説明
-m, --memoryインメモリデータベースを使用(パスが指定されていても)
-e, --executeSQLを実行して終了(繰り返し可能)
-f, --fileSQLファイルを実行して終了(繰り返し可能)
--stdin標準入力からSQLを読み取って終了
--hostリモートPetraDBサーバーに接続
--portサーバーポート(デフォルト:5480)
--user認証用ユーザー名
--password認証用パスワード
Terminal window
# 対話型インメモリセッションを開始
petradb
# 永続データベースを開くまたは作成
petradb mydata.db
# 非対話的にSQLを実行
petradb mydata.db -e "SELECT * FROM users"
# ファイルを実行してからクエリを実行
petradb mydata.db -f schema.sql -e "SELECT count(*) FROM users"
# 標準入力からSQLをパイプ
echo "SELECT 1 + 1" | petradb --stdin
# リモートサーバーに接続
petradb --host myserver.example.com --port 5480
# 認証付きで接続
petradb --host localhost --user admin --password secret

ファイル拡張子によってストレージモードが決まります。

拡張子モード説明
.petra(またはその他)永続コピーオンライトページによるクラッシュセーフな永続ストレージ
.ptxtテキスト人間が読めるファイル、変更のたびに書き換え
(パスなし)インメモリセッション期間中のみデータが存在

dumpサブコマンドは、永続データベースの完全なスキーマとデータをSQL文として出力します。

Terminal window
petradb dump mydata.db

出力にはCREATE TYPECREATE TABLEINSERT INTOCREATE VIEW文が含まれ、データベースをゼロから再作成できます。

-e-f--stdinなしで起動すると、CLIはreadline履歴付きの対話型SQLシェルに入ります。

;で終わるSQLを入力すると実行されます。複数行入力がサポートされており、;で終わるまで継続プロンプト( ->)が表示されます。

コマンド説明
\dtすべてのテーブルを一覧表示
\dvすべてのビューを一覧表示
\dsすべてのシーケンスを一覧表示
\diすべてのインデックスを一覧表示
\d <name>テーブルまたはビューの説明(カラム、型、NULL可否)
\i <file>ファイルからSQLを実行
\dump完全なスキーマとデータをSQLとして出力
\copy <args>COPY文を実行
\timingクエリ実行時間の表示を切り替え
\q終了
$ petradb
PetraDB — interactive SQL shell
Type \q to quit, \dt to list tables, \d <table> to describe a table.
petra> CREATE TABLE cities (name TEXT, population INT);
CREATE TABLE
petra> INSERT INTO cities (name, population) VALUES ('Oslo', 709037);
INSERT 0 1
petra> SELECT * FROM cities;
name | population
------+------------
Oslo | 709037
(1 row)
petra> \dt
Table
--------
cities
(1 row)
petra> \d cities
Table "cities"
Column | Type | Nullable
------------+------+----------
name | TEXT | null
population | INT | null
petra> \timing
Timing is on.
petra> SELECT count(*) FROM cities;
count
-------
1
(1 row)
Time: 0.002 s
petra> \q