#!/usr/bin/perl
use strict;
use warnings;
use Net::Amazon::MechanicalTurk;
use Net::Amazon::MechanicalTurk::RowData::SQLRowData;
use DBI;
#
# Use this script to see what is in the sqlite db.
# This code also uses the SQLRowData class to iterate
# through database rows, the way the loadHITs method would
# for loading.
#
sub get_tables {
my $dbh = shift;
my $data = Net::Amazon::MechanicalTurk::RowData::SQLRowData->new(
dbh => $dbh,
sql => "SELECT tbl_name FROM sqlite_master WHERE type = 'table'"
);
my @tables;
$data->each(sub {
my ($data, $row) = @_;
push(@tables, $row->{tbl_name});
});
return @tables;
}
my $dbh = DBI->connect("dbi:SQLite2:dbname=turk.db","","", {
RaiseError => 1,
AutoCommit => 0
});
foreach my $table (get_tables($dbh)) {
my $data = Net::Amazon::MechanicalTurk::RowData::SQLRowData->new(
dbh => $dbh,
sql => "SELECT * FROM $table"
);
my $count = 0;
print "TABLE $table\n";
print "-" x 60, "\n";
$data->each(sub {
my ($data, $row) = @_;
my $fields = $data->fieldNames;
print(join("|", @$fields), "\n") if ($count++ == 0);
print(join("|", map { $row->{$_} } @$fields), "\n");
});
print "\n\n";
}
$dbh->commit;
$dbh->disconnect;