Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > как получить имена полей таблицы


Автор: saint 6.2.2006, 00:19
Подскажите плз. как получить имена полей таблицы. С помощь DBI это можно сделать через Statement Attribute - NAME, примерно следующим образом:

Код

my $sth = $dbh->prepare("SELECT * FROM $tab_name") or die $dbh->errstr;
$sth->execute() or die $dbh->errstr;
print join(" ", @{$sth->{'NAME'}}), "\n";
$sth->finish;


Но в документации к DBI сказано:

Цитата

Some attributes, like NAME, are not appropriate to some types of statement, like SELECT. Typically the attribute will be undef in these situations.


Но для DBI-ODBC у меня данный код нормально отработал и выдал имена всех полей таблицы. Может я чето не так понял? И еще можно ли осуществить сабж средствами SQL, т.е. через соответствующий запрос?

Заранее благодарен.



Автор: sharq 6.2.2006, 12:46
saint например, для mysql можно выполнить запрос:
Код

SHOW COLUMNS FROM table_name

или
Код

DESCRIBE table_name


smile

Автор: saint 6.2.2006, 20:29
sharq, у меня на PostgreSQL 8.0.3 это не работает.

Автор: sharq 7.2.2006, 10:30
saint
Цитата(saint @ 6.2.2006, 21:29 Найти цитируемый пост)

у меня на PostgreSQL 8.0.3 это не работает.

Цитата(sharq @ 6.2.2006, 13:46 Найти цитируемый пост)

для mysql

smile

Можешь поинтересоваться в документации к СУБД postgres, как с помощью запроса получить что-нибудь похожее.

А зачем тебе только имена полей. Если для того, чтобы обращаться к содержимому поля, то это решается просто - через выборку fetchall_hashref или fetchrow_hashref.

smile

Автор: saint 8.2.2006, 13:44
это нужно, что бы создать таблицу. Общая задача такова: есть бд одного формата, я читаю из нее все таблици и переношу их в бд другого формата.

З.Ы. может кто даст ссылку на стандартные типы данных SQL в виде "название - числовое_обозначение".

Автор: sharq 8.2.2006, 16:57
Цитата(saint @ 8.2.2006, 14:44 Найти цитируемый пост)

это нужно, что бы создать таблицу. Общая задача такова: есть бд одного формата, я читаю из нее все таблици и переношу их в бд другого формата.

если это задача одноразовая, то попробуй дампнуть текущую базу и работать уже с дампом как с обычным файлом, произвести замены с помощью re.

Цитата(saint @ 8.2.2006, 14:44 Найти цитируемый пост)

З.Ы. может кто даст ссылку на стандартные типы данных SQL в виде "название - числовое_обозначение".

чем тебя не устраивает стандартная документация к PostgreSQL?

smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)