DBIx::Classでテーブルとカラムの一覧
簡単ですね。
get_table_info.pl
#!/usr/local/perl5.8.7/bin/perl
use Data::Dumper;
use DBIx::Class::Schema::Loader;
my $tmp_pkg = 'Temp::Schema';
push @{$tmp_pkg . '::ISA'}, qw/DBIx::Class::Schema::Loader/;
$tmp_pkg->loader_options(relationships => 1);
my $c = $tmp_pkg->connect(@ARGV);
my $mapping = $tmp_pkg->class_mappings;
foreach my $k (keys %$mapping){
print Dumper({$k => [ {class => $mapping->{$k}}, map {$_, $k->column_info($_)}$k->columns ]})
}下記のようにして使います。
./get_table_info.pl dbi:mysql:hogehgoe user
出力例はこんな感じ。
$VAR1 = {
'Temp::Schema::Task' => [
{
'class' => 'Task'
},
'task_id',
{
'data_type' => 'INT',
'default_value' => undef,
'is_nullable' => 0,
'size' => '11'
},
'name',
{
'data_type' => 'VARCHAR',
'default_value' => undef,
'is_nullable' => 1,
'size' => '255'
}
]
};