コンテンツにスキップ
ブリッジ - SQLite

ブリッジ - SQLite

SQLiteブリッジの登録

SQLiteに接続するブリッジを登録します。

bridge add -t sqlite sqlitedb file:/data/sqlite.db;

SQLiteは、以下のメモリ専用モードにも対応しています。

bridge add -t sqlite mem file::memory:?cache=shared

以下のコマンドは、図のWeb UIで行う設定と同じです。

ブリッジの接続テスト

machbase-neo» bridge test mem;
Test bridge mem connectivity... success 11.917µs

テーブルの作成

machbase-neoシェルで、memブリッジを介してmem_exampleテーブルを作成します。

bridge exec mem CREATE TABLE IF NOT EXISTS mem_example(
    id         INTEGER NOT NULL PRIMARY KEY,
    company    TEXT,
    employee   INTEGER,
    discount   REAL,
    code       TEXT,
    valid      BOOLEAN,
    memo       BLOB,
    created_on DATETIME NOT NULL
);

標準のSQLエディターでは、-- env: bridge=<name>コメントを指定すると、対応するブリッジでSQLを実行できます。 このコメントの設定は、-- env: resetでリセットするまで有効です。

-- env: bridge=mem
CREATE TABLE IF NOT EXISTS mem_example(
    id         INTEGER NOT NULL PRIMARY KEY,
    company    TEXT,
    employee   INTEGER,
    discount   REAL,
    code       TEXT,
    valid      BOOLEAN,
    memo       BLOB,
    created_on DATETIME NOT NULL
);
-- env: reset

SQLエディターでのDMLの実行

-- env: bridge=mem
INSERT INTO mem_example(company, employee, created_on) 
    values('Fedel-Gaylord', 12, datetime('now'));

INSERT INTO mem_example(company, employee, created_on) 
    values('Simoni', 23, datetime('now'));

SELECT company, employee, datetime(created_on, 'localtime') from mem_example;

DELETE from mem_example;
-- env: reset

TQLによるSQLiteへの書き込み

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
FAKE( json({
    ["COMPANY", "EMPLOYEE"],
    ["NovaWave", 10],
    ["Sunflower", 20]
}))

DROP(1) // ヘッダーをスキップ
SQL(bridge("mem"), 
    `insert into mem_example (company, employee, created_on) values(?, ?, ?)`,
    value(0), value(1), time('now'))
machbase-neo» bridge query mem select * from mem_example;
╭────┬─────────┬──────────┬──────────┬───────┬───────┬──────┬──────────────────────────────────────╮
│ ID │ COMPANY │ EMPLOYEE │ DISCOUNT │ CODE  │ VALID │ MEMO │ CREATED_ON                           │
├────┼─────────┼──────────┼──────────┼───────┼───────┼──────┼──────────────────────────────────────┤
│  1 │ acme    │       10 │ <nil>    │ <nil> │ <nil> │ []   │ 2023-08-10 14:33:08.667491 +0900 KST │
╰────┴─────────┴──────────┴──────────┴───────┴───────┴──────┴──────────────────────────────────────╯

TQLによるSQLiteからの読み取り

以下のコードをsqlite.tqlとして保存します。

SQL(bridge('mem'), "select company, employee, created_on from mem_example")
CSV()

次に、curlコマンドまたはブラウザーでエンドポイントを呼び出します。

curl -o - http://127.0.0.1:5654/db/tql/sqlite.tql
NovaWave,10,1704866777160399000
Sunflower,20,1704866777160407000

SQLiteとのデータコピー

次の例は、MachbaseのデータをSQLiteブリッジにコピーする方法を示しています。

ブリッジ

以下の設定でsqliteブリッジを定義します。

  • 種類: SQLite
  • 接続文字列: file:///tmp/sqlite.db

SQL

/tmp/sqlite.dbにあるSQLiteデータベースに、exampleテーブルを作成します。

--env: bridge=sqlite
CREATE TABLE IF NOT EXISTS example (
    NAME TEXT,
    TIME DATETIME,
    VALUE REAL
);
-- env: reset

TQL

以下のTQLスクリプトは、SQL()でデータを検索した後、SQL()bridge("sqlite")を指定してSQLiteに取り込みます。

SQL(`select name, time, value from example where name = 'my-car'`)
SQL(bridge("sqlite"), 
    `insert into example values(?,?,?)`,
    value(0), value(1), value(2))

SQL

--env: bridge=sqlite
SELECT * FROM example order by TIME;
-- env: reset
最終更新日