43 lines
1.4 KiB
Markdown
43 lines
1.4 KiB
Markdown
# SQLite
|
||
|
||
ワークスペース内の SQLite データベースに対してクエリを実行する。
|
||
|
||
## 基本
|
||
|
||
```js
|
||
SQLite({
|
||
db_path: "input/data.db",
|
||
query: "SELECT name, price FROM products WHERE category = 'A' LIMIT 10"
|
||
})
|
||
```
|
||
|
||
## edit 制御
|
||
|
||
- **edit: false の movement**: SELECT のみ許可(読み取り専用)
|
||
- **edit: true の movement**: INSERT / UPDATE / DELETE / CREATE / ALTER 等の DDL/DML も許可
|
||
|
||
## 用途
|
||
|
||
- 既存の SQLite データベースの内容調査
|
||
- データ集計(GROUP BY, JOIN)
|
||
- スキーマ確認(`SELECT name FROM sqlite_master WHERE type='table'`)
|
||
- 加工後データの新規 DB への書き込み(edit movement のみ)
|
||
|
||
## クエリの実行結果
|
||
|
||
- 行は JSON 配列で返る
|
||
- 大量行はトークン消費が大きいので **必ず LIMIT を付ける** か WHERE で絞る
|
||
- 1 万行を超えるような結果は LIMIT 100 程度から始めて段階的に確認
|
||
|
||
## 入力ファイルの場所
|
||
|
||
- workspace 内のパス(`input/`, `output/`, `data/` 等)
|
||
- 絶対パスは禁止
|
||
- DB ファイルが存在しないときは(edit movement なら)新規作成される
|
||
|
||
## トラブルシューティング
|
||
|
||
- **database is locked**: 他プロセスが DB を開いている。暫く待ってリトライ
|
||
- **no such table**: スキーマ確認 → テーブル名スペルチェック
|
||
- **disk I/O error**: ディスク容量・パーミッション確認
|