2016-04-13 11 views
0

Ich führe derzeit eine SQL-Abfrage mit Oracle SQL Developer und Einfügen in eine Standardabfrage (selbe SELECT jedes Mal), dann in eine CSV-Datei exportieren. Ich möchte die Abfrage über eine Batch-Datei ausführen und die Ausgabe in einem bestimmten Ordner platzieren. Ich benutze bereits viele Batch-Dateien auf diesem Rechner und möchte diese Abfrage zu einer Routine machen.Verbinden mit SQL über ODBC mit einem .bat

Meine Maschine hat eine bestehende ODBC-Verbindung zu "WHPROD", aber ich weiß nicht, wie ich sie benutzen soll. Gibt es eine Möglichkeit, eine Verbindung zu WHPROD aus einer Batchdatei herzustellen?

+0

werfen Sie einen Blick auf SQLCMD. – RGuggisberg

Antwort

0

Dies ist kaum möglich, in Batch-Skript direkt, ohne

zu kompliziert going aber es ist einfach es mit VBscript zu tun, und da Sie Ihre VBscript aus einer Batch-Skript aufrufen kann, wird das Ergebnis sein, genau das, was Sie wollen.

Hier ist ein Beispiel dafür, wie Oracle und rufen Sie die Ergebnisse einer SELECT von VBS verbinden: (source)

Dim strCon 

strCon = “Driver={Microsoft ODBC for Oracle}; ” & _ 
     “CONNECTSTRING=(DESCRIPTION=” & _ 
     “(ADDRESS=(PROTOCOL=TCP)” & _ 
     “(HOST=Server_Name)(PORT=1521))” & _ 
     “(CONNECT_DATA=(SERVICE_NAME=DB_Name))); uid=system;pwd=system;” 

Dim oCon: Set oCon = WScript.CreateObject(“ADODB.Connection”) 
Dim oRs: Set oRs = WScript.CreateObject(“ADODB.Recordset”) 
oCon.Open strCon 

Set oRs = oCon.Execute(“SELECT name from v$database”) 

While Not oRs.EOF 
    WScript.Echo oRs.Fields(0).Value 
    oRs.MoveNext 
Wend 
oCon.Close 

Set oRs = Nothing 
Set oCon = Nothing 

Und so rufen Sie Ihre VBS aus dem Batch-Skript:

@echo off 

start "C:\\yourbatchfolder\\yourscript.vbs" 
0

I wrote an in-depth batch script einmal das erstellt eine MSSQL-Datenbank. Es gibt viele gute Hinweise in diesem Skript, die Ihnen helfen können, loszulegen.

Das Skript verwendet nicht speziell ODBC, aber ich glaube, dass SQLCMD-Argumente geändert werden können, um eine ODBC-definierte Verbindung zu verwenden? Das mag für dich funktionieren. und nicht nur auf MSSQL Server.