# phpman > man > DBD::SQLite::VirtualTable::FileContent

## NAME
    [DBD::SQLite::VirtualTable::FileContent](https://www.chedong.com/phpMan.php/perldoc/DBD%3A%3ASQLite%3A%3AVirtualTable%3A%3AFileContent/markdown) -- virtual table for viewing file contents

## SYNOPSIS
    Within Perl :

      $dbh->sqlite_create_module(fcontent => "[DBD::SQLite::VirtualTable::FileContent](https://www.chedong.com/phpMan.php/perldoc/DBD%3A%3ASQLite%3A%3AVirtualTable%3A%3AFileContent/markdown)");

    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](https://www.chedong.com/phpMan.php/perldoc/Foo%3A%3ABar%3A%3Areadfromfile/markdown)
        );

      SELECT col1, path, content FROM tbl WHERE ...;

## DESCRIPTION
    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
    [DBD::SQLite::Fulltext_search](https://www.chedong.com/phpMan.php/perldoc/DBD%3A%3ASQLite%3A%3AFulltextsearch/markdown)) : the index table stores some metadata about files, and then the
    fulltext engine can index both the metadata and the file contents.

## PARAMETERS
    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);

## AUTHOR
    Laurent Dami <<dami@cpan.org>>

## COPYRIGHT AND LICENSE
    Copyright Laurent Dami, 2014.

    This library is free software; you can redistribute it and/or modify it under the same terms as
    Perl itself.

