Когда-то давно я делал так: http://as-pushkin.blogspot.com/search/label/DBIC. Но в классы приходилось руками добавлять имя схемы в имя таблицы.
27 ноября 2009 г. 16:48 пользователь Orlovsky Alexander < [email protected]> написал: > Осваиваю DBIx::Class и захотелось мне сгенерить схему > DBIx::Class::Schema::Loader-ом из табличек, которые есть в БД (PostgreSQL) > Делаю все по мануалу и у меня оно не работает почему-то. (вместе с SQLite > работает, но мне то нужен PostgreSQL) > > Ситуация такая: > В начале оно унутре себя делает первый страшный запрос (*приведен ниже), > который (зачем то) выбирает таблички: > public.pg_freespacemap_pages > public.pg_freespacemap_relations > public.pg_buffercache > а затем оно делает из них запросы вида: > SELECT * FROM public.pg_buffercache WHERE ( 1 = 0 ) > и генерит схемку для этих таблиц > вместо того чтобы генерить схемку из нужных мне таблиц из схемы к которой я > коннекчусь. > (при коннекте я указываю правильную базу и схему (не public ;) > Че это оно? > > Запросы из: > http://bytes.com/topic/postgresql/answers/172978-sql-command-list-tables > работают нормально (для проверки запускал) и выдают список нужных мне > таблиц. > Все осложняется тем, что Postgress я не знаю, т.ч. вычленить проблему мне > сложновато так вот сразу. > > Или может просто рисовать схему ручками при помощи DBIx::Class + > DBIx::DBIx::Class::Schema - пойдя по пути наименьшего сопротивления? :) (а > жалка! удобнее рисовать что-то в базке а потом оттуда выгружать, чем > наоборот) > > Кто-нибудь вообще пользовался DBIx::Class::Schema::Loader в свзяке с PgSQL > ? :) А то я может не там спрашиваю :) > > P/S > Страшный (для меня) запрос: > > SELECT NULL::text AS "TABLE_CAT" > , quote_ident(n.nspname) AS "TABLE_SCHEM" > , quote_ident(c.relname) AS "TABLE_NAME" > , CASE > WHEN c.relkind = 'v' THEN > CASE WHEN quote_ident(n.nspname) ~ '^pg_' THEN 'SYSTEM VIEW' ELSE > 'VIEW' END > ELSE > CASE WHEN quote_ident(n.nspname) ~ '^pg_' THEN 'SYSTEM TABLE' ELSE > 'TABLE' END > END AS "TABLE_TYPE" > , d.description AS "REMARKS" , quote_ident(t.spcname) AS > "pg_tablespace_name" > , quote_ident(t.spclocation) AS "pg_tablespace_location" > , n.nspname AS pg_schema > , c.relname AS pg_table > FROM pg_catalog.pg_class AS c > LEFT JOIN pg_catalog.pg_description AS d > ON (c.oid = d.objoid AND c.tableoid = d.classoid AND > d.objsubid = 0) > LEFT JOIN pg_catalog.pg_namespace n ON (n.oid = c.relnamespace) > LEFT JOIN pg_catalog.pg_tablespace t ON (t.oid = c.reltablespace) > WHERE n.nspname = 'public' > AND c.relname LIKE '%' > AND c.relkind IN ('r','v') > ORDER BY "TABLE_TYPE", "TABLE_CAT", "TABLE_SCHEM", "TABLE_NAME" > -- > Moscow.pm mailing list > [email protected] | http://moscow.pm.org > -- Andrei Protasovitski < andrei[dot]protasovitski[at]gmail[dot]com > Diemen, Netherlands
-- Moscow.pm mailing list [email protected] | http://moscow.pm.org
