Краткая инструкция по выполнению SQL-запросов с использованием языка Perl в базе данных PostgreSQL.
За основу берём скрипт подключения Perl к СУБД PostgreSQL.
Само по себе успешное подключение предполагает дальнейшую работу с базой данных. Поэтому вместо условия успешного подключения к БД начнём писать скрипт.
Запрос может быть любым. В нашем примере запрос будет выбирать все колонки и строки из таблицы shop_goods:
SELECT * FROM shop_goods;
Заворачиваем запрос в переменную $query и выполняем его:
my $query = $dbh->prepare("SELECT * FROM shop_goods"); $query->execute();
Далее циклом while обходим строки таблицы:
while ($ref = $query->fetchrow_arrayref){ print "<p>$$ref[0]. $$ref[2] - $$ref[3] - $$ref[4] рублей - $$ref[5] штук </p> \n"; }
После этого завершаем работу с запросом и отключаемся от БД:
$rc = $query->finish; $rc = $dbh->disconnect;
Полностью рабочий скрипт будет выглядеть примерно так:
#!/usr/bin/perl use DBI; my $hostname = "localhost"; my $port = "5432"; my $user = "db_user"; my $password = "yourPassword"; my $dbname = "test_db"; print "Content-Type: text/html;charset=utf-8 \n\n"; print "<h1>PostgreSQL query example</h1> \n"; my $dbh = DBI->connect("dbi:Pg:dbname=$dbname;host=$hostname;port=$port",$user,$password); if (!$dbh) { print "<h2>Ошибка подключения к базе данных.</h2> \n $DBI::errstr \n"; } my $query = $dbh->prepare("SELECT * FROM shop_goods"); $query->execute(); while ($ref = $query->fetchrow_arrayref){ print "<p>$$ref[0]. $$ref[2] - $$ref[3] - $$ref[4] рублей - $$ref[5] штук </p> \n"; } $rc = $query->finish; $rc = $dbh->disconnect;
Результат выполнения данного скрипта будет выглядеть так:
PostgreSQL query example 1. Ноутбук ASUS VivoBook A540L - Ноутбуки - 15000.00 рублей - 10 штук 2. МФУ Kyocera Ecosys M2535fdn - МФУ - 22000.00 рублей - 5 штук 3. Сумка для ноутбука 15-дюймов, серая - Сумки и чехлы - 3500.00 рублей - 6 штук 4. Картридж Cactus CS-CE285A - Картриджи - 950.00 рублей - 15 штук 5. SSD диск GIGABYTE 2.5" 256 Гб SATA III NAND TLC (GP-GSTFS31256GTND) - SSD-диски - 3000.00 рублей - 18 штук 6. USB флешка 64Gb Kingston DTX/64Gb USB 3.2 Gen 1 (USB 3.0) - USB-диски, флешки - 750.00 рублей - 35 штук 7. USB флешка 128Gb Kingston DTX/128Gb USB 3.2 Gen 1 (USB 3.0) - USB-диски, флешки - 1300.00 рублей - 25 штук 8. Телевизор Samsung UE50TU8000UX, 4K Ultra HD, черный - Телевизоры - 46800.00 рублей - 3 штук 9. Кронштейн ONKRON M15, для LCD телевизора 32"-75", черный - Кронштейны - 4100.00 рублей - 8 штук 10. Телевизор LG 43LM5700PLA, черный - Телевизоры - 32000.00 рублей - 7 штук