SQL::Translator の parser, producer を直接使う
余り頻繁に使うモジュールでは無いのでメモっとく。
#/usr/bin/perl use strict; use warnings; use Data::Dump qw(dump); use Perl6::Say; use SQL::Translator; my $dbh = DBI->connect("dbi:mysql:world", "root", ""); my $table = $dbh->selectrow_arrayref("show create table City;")->[1] . ";\n\n"; my $tr = SQL::Translator->new; $tr->parser("SQL::Translator::Parser::MySQL"); $tr->producer("SQL::Translator::Producer::YAML"); my $parser_output; eval { $parser_output = $tr->parser->($tr, $table); }; if ($@ || !$parser_output) { die(@_ || "no results"); } say dump($tr->schema); my $producer_output = $tr->producer->($tr); say $producer_output;
とりあえず、parse した後には成功してれば schema オブジェクトに展開されたスキーマデータが含まれます。producer に通すと YAML 表現になります。