use strict; use DBIx::Class::Loader; use AI::Prolog; my $loader = DBIx::Class::Loader->new( dsn => $ARGV[0], user => $ARGV[1], password => $ARGV[2], namespace => 'Data', ); my $prog; for my $c ( $loader->classes ) { my $rs = $c->search(); $prog .= '% ' . join ( ',', $c->columns ) . "\n"; while ( my $row = $rs->next ){ $prog .= $c->table . '('; my @quoted = map {AI::Prolog->quote($row->$_)} $c->columns; $prog .= join ',', @quoted; $prog .= ").\n"; } } print $prog; #### create table usr(id integer primary key, name varchar(100), cityid integer); create table city (id integer primary key, name varchar(100)); insert into usr values (1, 'John', 1); insert into usr values (2, 'Marry', 1); insert into usr values (3, 'Eva', 2); insert into usr values (4, 'Zby', 3); insert into city values (1, 'New York'); insert into city values (2, 'London'); insert into city values (3, 'Warsaw'); #### perl dump.pl dbi:Pg:dbname=prolog > mytables #### % name,id city('New York',1). city('London',2). city('Warsaw',3). % cityid,name,id usr(1,'John',1). usr(1,'Marry',2). usr(2,'Eva',3). usr(3,'Zby',4). #### zby@zby:~/progs/prologdata$ swipl Welcome to SWI-Prolog (Multi-threaded, Version 5.2.13) Copyright (c) 1990-2003 University of Amsterdam. SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. Please visit http://www.swi-prolog.org for details. For help, use ?- help(Topic). or ?- apropos(Word). ?- [mytables]. % mytables compiled 0.00 sec, 1,400 bytes Yes ?- #### ?- usr(Cityid, Name, Id), city('New York', Cityid). Cityid = 1 Name = 'John' Id = 1 ; Cityid = 1 Name = 'Marry' Id = 2 ; No ?- #### my $prologDB = AI::Prolog->new( $prog ); $prologDB->query( "usr(1,Name,Uid)." ); while (my $results = $prologDB->results) { print "@$results\n"; }