sqlite3
sqlite3 copied to clipboard
Error: no such table: fsdir
Jan05-2039.ts
import { Database } from "https://deno.land/x/sqlite3/mod.ts";
const db = new Database(":memory:");
const sqlQuery = Deno.args[0];
const stmt = db.prepare(sqlQuery);
const result = stmt.all();
for (const row of result) {
console.log(row);
}
Execute sql
deno run --unstable -A ./Jan05-2039.ts "
select
name as file,
lines.rowid as line_number,
line
from fsdir('.')
join lines_read(name) as lines
where name like '%.txt';
"
Gives an error
error: Uncaught (in promise) Error: no such table: fsdir
throw new Error(Deno.UnsafePointerView.getCString(sqlite3_errmsg(db)!));
^
I don't think this vtable is available by default in SQLite3. You will have to load up an extension. Ref: https://sqlite.org/src/doc/tip/ext/misc/fileio.c
I don't think this vtable is available by default in SQLite3. You will have to load up an extension. Ref: https://sqlite.org/src/doc/tip/ext/misc/fileio.c
Usually I'm loading extensions like this
import * as sqlite_vss from "https://deno.land/x/sqlite_vss/mod.ts";
const db = new Database("headlines.db");
db.enableLoadExtension = true;
db.loadExtension('./lines0');
Given lines0.dylib downloaded from https://github.com/asg017/sqlite-lines/releases to the same folder
Where can I find fileio.dylib ?
I believe you have to compile it yourself, unless there are prebuilt binaries available elsewhere. fileio ext is in the sqlite source itself, and it's a single C file that you can compile to a dylib: https://sqlite.org/src/file/ext/misc/fileio.c - can check the sqlite docs for more instructions on how to compile.