DBD::SQLite::VirtualTable::FileContent -- virtual table for viewing file contents
Within Perl :
$dbh->sqlite_create_module(fcontent => "DBD::SQLite::VirtualTable::FileContent");
Then, within SQL :
CREATE VIRTUAL TABLE tbl USING fcontent(
source = src_table,
content_col = content,
path_col = path,
expose = "path, col1, col2, col3", -- or "*"
root = "/foo/bar"
get_content = Foo::Bar::read_from_file
);
SELECT col1, path, content FROM tbl WHERE ...;
A ``FileContent'' virtual table is bound to some underlying source
table, which has a column containing paths to files. The virtual
table behaves like a database view on the source table, with an added
column which exposes the content from those files.
This is especially useful as an ``external content'' to some
fulltext table (see the DBD::SQLite::Fulltext_search manpage) : the index
table stores some metadata about files, and then the fulltext engine
can index both the metadata and the file contents.
Parameters for creating a FileContent virtual table are
specified within the CREATE VIRTUAL TABLE statement, just
like regular column declarations, but with an '=' sign.
Authorized parameters are :
- source
-
The name of the source table.
This parameter is mandatory. All other parameters are optional.
- content_col
-
The name of the virtual column exposing file contents.
The default is
content .
- path_col
-
The name of the column in
source that contains paths to files.
The default is path .
- expose
-
A comma-separated list (within double quotes) of source column names
to be exposed by the virtual table. The default is
"*" , which means
all source columns.
- root
-
An optional root directory that will be prepended to the path column
when opening files.
- get_content
-
Fully qualified name of a Perl function for reading file contents.
The default implementation just slurps the entire file into a string;
but this hook can point to more sophisticated implementations, like for
example a function that would remove html tags. The hooked function is
called like this :
$file_content = $get_content->($path, $root);
Laurent Dami <dami@cpan.org>
Copyright Laurent Dami, 2014.
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
|