Ich möchte ein Skript schreiben, entweder Perl oder Bash, wo ich eine oder mehrere Wählen Sie SQL-Anweisungen, um einige Informationen aus einer Datenbank auf einem Remote-Server zu erhalten.Ausführen von SQL-Anweisung von Bash oder Perl Script?
Derzeit kann ich GUI-Tools wie RazorSQL und DbVisualizer verwenden, um eine Verbindung zur Datenbank herzustellen und Tabellen anzuzeigen, SQL-Befehle auszuführen usw. Aber ich möchte versuchen, einige SQL-Befehle aus einem Skript auszuführen, damit ich das verwenden kann ergibt sich aus den cmds in einem Bash/Perl Script.
der Server die Datenbank läuft, hat die folgenden Angaben:
- Betriebssystem: Microsoft Windows Server 2003 RS Standard Edition SP2
- Datenbank: Microsoft SQL Server 2005
Beim Verbinden mit der Datenbank unter Verwendung von RazorSQL auf einem Windows-PC verwendet meine Verbindung den Treiber "net.sourceforge.jt" ds.jdbc.Driver ".
Dann, wenn ich DbVisualizer auf meiner Linux-Box verwende ich den JDBC-Treiber "SQL Server (jTDS)", die beide scheinen gut zu funktionieren.
So in einem Versuch, diese von Perl zu versuchen, die ich heruntergeladen habe die folgenden Pakete:
- unixODBC
- FreeTDS
- sqsh --->* aber konnte ich es nicht wegen kompiliert erhalten Sybase ...
- Die Perl-Module: DBD :: ODBC, JDBC DBD :: DBI
Zur Installation, Test und Inbetriebnahme unixODBC verwendet habe ich diese Seite: http://www.easysoft.com/developer/languages/perl/dbd_odbc_tutorial_part_1.html
und verwenden diese Website: http://www.unixodbc.org/doc/UserManual/, zu DSNs hinzufügen ...
Nun versuchte ich hier diese Richtungen zu verwenden: http://www.freetds.org/userguide/perl.htm, in die Datenbank von Perl zu verbinden , aber ich habe Probleme, es zu verbinden.
Kann mir jemand sagen, ob ich auf dem richtigen Pfad dafür bin, oder wie meine connect() - Zeichenfolge aussehen soll ...? In RazorSQL die JDBC „URL“ sieht wie folgt aus:
jdbc:jtds:sqlserver://192.168.2.200:1433/ActiveDB;appName=RazorSQL;useCursors=true
Und ich bin verwirrt, wie ein DSN zu verwenden, die ich mit dem GUI-Befehl ODBCConfig aus dem Perl-Script erstellt ... Ich bin Probleme bei der Suche nach einem realen Beispiel für die Verbindung zu MS SQL Server in Perl.
Die Datei mit dem Treiber-Eintrag wie folgt aussieht: odbcinst.ini
[MySQL ODBC 3.51.27r695 Driver]
Driver = /usr/lib/unixODBC/libmyodbc3.so
Setup = /usr/lib/unixODBC/libmyodbc3S.so
UsageCount = 1
[JDBC/ODBC bridge driver for java-1_6_0-sun]
Driver = /usr/lib/jvm/java-1.6.0-sun-1.6.0/jre/lib/i386/libJdbcOdbc.so
Setup = /usr/lib/jvm/java-1.6.0-sun-1.6.0/jre/lib/i386/libJdbcOdbc.so
UsageCount = 1
[TDS Driver]
Driver = /usr/lib/unixODBC/libtdsS.so
Setup = /usr/lib/unixODBC/libtdsS.so
UsageCount = 1
[net.sourceforge.jtds.jdbc.Driver]
Driver = /opt/jtds-1.3.1/jtds-1.3.1.jar
Setup = /opt/jtds-1.3.1/jtds-1.3.1.jar
UsageCount = 1
* Die letzten in dieser Liste die gleichen Treiber von RazorSQL verwendet, aber da es eine JAR-Datei Ich denke, es kann nur mit Java-Programmen verwendet werden ...
Und das ist in ~/.odbc.ini
[MyDB]
Driver = /usr/lib/unixODBC/libtdsS.so
Description =
SERVER = serverName.foo.bar.local
PORT = 1433
USER = user1
Password = abc123
Database = ActiveDB
Da, wie soll mein "connect()" string Blick in Perl, und würde, dass der richtige Treiber zu verwenden. ..?
Ich bin neu beim Versuch, dies mit einem Skript, und mein Kopf dreht sich derzeit mit Informationen .... Also jede Hilfe, die jemand anbieten könnte würde sehr geschätzt werden!
Wenn es nicht funktioniert, werde ich diese Antwort löschen. – simbabque
Danke für die Antwort simbabque, ich schätze wirklich die Hilfe ..! Das hat nicht genau funktioniert. Ich habe einen Fehler in der DBI-Verbindungsleitung erhalten, der besagt: "failed: [unixODBC] [Driver Manager] Datenquellenname nicht gefunden und kein Standardtreiber angegeben (SQL-IM002)" ... Das hat mich zum Nachdenken gebracht, und ich Ersetzte das gesamte '$ dsn =" ... "' mit nur dem Namen des DSN, \ * ie "[MyDB]" .. Also hatte ich 'my $ dsn =" MyDB ";. Und dieses Mal hat der Befehl lange gedauert, bis er scheiterte, und diesmal bekam ich einen anderen Fehler: "Verbindung zum MySQL-Server verloren bei 'initialem Kommunikationspaket lesen', Systemfehler: 104" – Matt
Warum sollte er versuchen, eine Verbindung zu MySQL herzustellen? ? Sprechen wir nicht über einen Microsoft SQL Server? – simbabque