Ich weiß, dass es eine ähnliche Frage gibt: Verbinden Sie sich mit SQL Server 2005 von Perl aus und führen Sie ein SELECT aber ich habe die akzeptierte Antwort ausprobiert und bin nicht in der Lage, sie zum Laufen zu bringen.
Angenommen, ich habe eine Datenbank mit dem Namen test und möchte ein select from mytable ausführen ( select id, name from mytable
)
Der Code stammt aus dem obigen Link mit aktualisierten DNS:
use strict;
use warnings;
use DBI;
# Insert your DSN's name here.
my $dsn = 'database=test'
# Change username and password to something more meaningful
my $dbh = DBI->connect("DBI::ODBC::$dsn", 'username', 'password')
# Prepare your sql statement (perldoc DBI for much more info).
my $sth = $dbh->prepare('select id, name from mytable');
# Execute the statement.
if ($sth->execute)
{
# This will keep returning until you run out of rows.
while (my $row = $sth->fetchrow_hashref)
{
print "ID = $row->{id}, Name = $row->{name}\n";
}
}
# Done. Close the connection.
$dbh->disconnect;
Das ist das Ergebnis, wenn ich das Skript ausführe: Es kann keine Verbindung zur Datenquelle 'ODBC::database=test' hergestellt werden, weil ich nicht herausfinden kann, welcher Treiber zu verwenden ist (es scheint kein 'dbi:driver:' Präfix zu enthalten und die DBI_DR IVER env var ist nicht gesetzt) in script.pl Zeile 9
Es sieht so aus, als ob das Problem in der dsn liegt, aber ich habe keine Ahnung, wie ich es beheben kann (ich arbeite mit Sql 2005, aktivem Perl 5.10 und Windows xp).
Bearbeiten: Ich habe den folgenden Code verwendet, um zu überprüfen, ob ODBC installiert ist. DBI verwenden;
print join (", ", DBI->installed_versions);
Ausgabe: Es sieht so aus, als ob ODBC tatsächlich in der Liste enthalten ist.
ADO, CSV, DBM, ExampleP, File, Gofer, ODBC, SQLite, Sponge, mysql
Was übersehe ich?