Можно ли как-то получить информацию о том, что столбец имеет атрибуты UNIQUE или AUTO_INCREMENT. Пробовал анализировать вывод $dbh->column_info, но не нашёл там ничего похожего. Вот код, который я использую для получения информации о всех таблицах: #!/usr/bin/perl use warnings; use strict; # This program makes a snapshot of DB structure use lib '..'; use Settings; use Db; my $st_table = $Db::dbh->table_info(undef, undef, undef, undef) or die "table_info failed\n"; my $table_hash; my $i; for( $i = 1; -e "snapshot_$i"; ++$i ) { } open(STDOUT, ">snapshot_$i"); while( $table_hash = $st_table->fetchrow_hashref() ) { my $table_name = $table_hash->{TABLE_NAME}; print "TABLE $table_name\n"; my $st_field = $Db::dbh->column_info(undef, undef, $table_name, '%') or die "column_info failed\n"; my $field_hash; my $primary_keys; while( $field_hash = $st_field->fetchrow_hashref() ) { $primary_keys .= ($field_hash->{COLUMN_NAME} . ",") if $field_hash->{mysql_is_pri_key}; print "\t"; print $field_hash->{COLUMN_NAME}; print " ", $field_hash->{mysql_type_name}; print " NOT NULL" if not $field_hash->{NULLABLE}; print "\n"; print "-------data-------\n"; my( $key, $value ); while( ($key, $value) = each(%{$field_hash}) ) { print "\"$key\"=>\"", (defined($value))?($value):("undef"), "\"\n"; } print "-------end--------\n"; } if ($primary_keys) { $primary_keys =~ s/^(.*),$/$1/; print "\tPRIMARY KEY ($primary_keys)\n"; } } Db это вспомогательный класс, в данном случае он просто осуществляет соединение с базой данных и создаёт $Db::dbh
Ответ на:
комментарий
от r_asian
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Внесение данных из формы в базу perl dbi (2017)
- Форум Парсинг логов в MySQL с помощью Perl скрипта (2017)
- Форум Добавление элементов в hash reference в рекурсивной функции (2015)
- Форум DBI Perl и MySQL (2001)
- Форум MySQL - DBI Perl - подключение (2001)
- Форум Perl DBI + MySql проблема (2004)
- Форум perl DBI и MySQL (2005)
- Форум perl dbi (2020)
- Форум perl DBI mysql вопрос про finish() (2010)
- Форум Получение информации (2013)