[Rio-pm] Usando DBIx::Class::Schema::Loader com DBD::CSV

Eden Cardim edencardim em gmail.com
Quinta Junho 2 17:11:16 PDT 2011


>>>>> "Donato" == Donato Azevedo <donatoaz em gmail.com> writes:

    Donato> Pessoas, Gostaria de usar o DBIx::Class::Schema::Loader para
    Donato> gerar um squema para um banco em que cada tabela está em um
    Donato> arquivo tipo CSV (o delimitador, no entando é \t )

    Donato> No caso do DBD::CSV, existe uma particularidade que é eu
    Donato> defino as tabelas através de driver flags, ou seja, eu tenho
    Donato> de passar quais as tabelas no dsn...

    Donato> Eu tentei o seguinte com o DBIx::Class ::Schema::Loader:

    Donato> <code>
    Donato> use DBIx::Class::Schema::Loader qw/ make_schema_at /;

    Donato> make_schema_at(
    Donato>       'SIATAB::Schema',
    Donato>       { debug => 1,
    Donato>         dump_directory => './lib',
    Donato>       },
    Donato>       [ 'dbi:CSV:f_dir=.;csv_sep_char=\t;csv_eol=\n;', '', '',
    Donato>          {
    Donato>            csv_tables => {
    Donato>                processo => { file => "allprocessos.tab" }
    Donato>            },
    Donato> },
    Donato>       ],
    Donato> );
    Donato> </code>

    Donato> e o resultado foi:

    Donato> Donato-Vianas-MacBook-Pro:exportsia donatoaz$ perl
    Donato> loader.pl  Undefined subroutine &DBIx::Class::Schema::catch
    Donato> called at /Library/Perl/5.10.0/DBIx/Class/Schema.pm line
    Donato> 830.

    Donato> mais genérico impossível...

    Donato> Alguma luz?

O DBIx::Class não consegue inferir schema do DBD::CSV nem de qualquer
descendente do DBD::File, por falta de suporte à API de metadados. No
caso, é culpa do DBD::CSV e do formato de storage que você escolheu. De
onde o DBIC vai ler as informações sobre o schema? Você vai ter que
declarar o schema manualmente mesmo.

-- 
   Eden Cardim       Need help with your Catalyst or DBIx::Class project?
  Code Monkey                    http://www.shadowcat.co.uk/catalyst/
 Shadowcat Systems Ltd.  Want a managed development or deployment platform?
http://blog.edencardim.com/            http://www.shadowcat.co.uk/servers/
http://twitter.com/#!/edenc


Mais detalhes sobre a lista de discussão Rio-pm