Мне нужно проверить структуру моей базы данных SQLite, которая составлена из уникальной таблицы, скажем, с 2 столбцами (id, name). Я не могу понять запрос SQL, чтобы получить схему таблицы моей базы данных.
Я могу получить все содержимое базы данных, используя метод DBI selectall_arrayref()
. Однако он возвращает только массив, содержащий значения в моей базе данных. Эта информация полезна, но я хотел бы иметь SQL-запрос, который возвращает что-то вроде id, name
(в основном, схема таблицы).
Я пробовал следующие запросы: SHOW COLUMNS FROM $tablename
, но также SELECT * from $tablename
(этот возвращает все содержимое таблицы).
Вот моя реализация:
# database path
my $db_path = "/my/path/to/.database.sqlite";
my $tablename = "table_name";
sub connect_to_database {
# Connect to the database
my $dbh = DBI->connect ("dbi:SQLite:dbname=$db_path", "", "",
{ RaiseError => 1, AutoCommit => 0 },
)
or confess $DBI::errstr;
return $dbh;
}
sub get_database_structure {
# Connect to the database
my $dbh = &connect_to_database();
# Get the structure of the database
my $sth = $dbh->prepare("SHOW COLUMNS FROM $tablename");
$sth->execute();
while (my $inphash = $sth->fetrow_hashref()) {
print $inphash."\n";
}
# Disconnect from the database
$dbh->disconnect();
}
# Call the sub to print the database structure
&get_database_structure();
Я ожидаю, что вывод будет структурой моей таблицы, поэтому id, name
но я выдаю ошибку: DBD::SQLite::db prepare failed: near "SHOW": syntax error
Я не могу найти хороший запрос. Любые комментарии или помощь будет принята с благодарностью.
Спасибо!