2010-01-12 3 views

risposta

8

Per Oracle:

How can I issue a single command from the command line through sql plus?

@echo select version from system; | sqlplus username/[email protected] 

è possibile inviare l'output a un file e l'uso che, o avvolgere questo in un comando for per analizzare l'output all'interno del file batch.

+0

Questo è esattamente quello che stavo cercando for..Thanks :) – Pia

+0

@ patrick..how possiamo inviare l'output ad un file sopra? – Sunny

+0

@Sunny; '@echo seleziona la versione dal sistema; | sqlplus nome utente/password @ database> file.ext'. –

5

MODIFICA: questa risposta è per SQL Server, non per Oracle. (Non è stato immediatamente chiaro quando la domanda è stata pubblicata).

È possibile controllare l'utilità sqlcmd.

L'utilità sqlcmd consente di immettere istruzioni Transact-SQL, procedure di sistema e file di script al prompt dei comandi. L'esempio seguente esegue una query all'avvio di sqlcmd e quindi termina immediatamente. Query multiple-virgola-delimitato possono essere eseguiti:

sqlcmd -d AdventureWorks -Q "SELECT FirstName, LastName FROM Person.Contact WHERE LastName LIKE 'Whi%';" 

Per salvare l'output della query in un file, è possibile utilizzare l'opzione -o C:\< filename>.

+2

Per SQL Server funziona perfetto – Pia

0

Se si dispone di un'utilità SQL della riga di comando, molto probabilmente consente le operazioni da riga di comando. Secondo la tua versione SQL puoi controllarlo.

3

Questo dipende dallo strumento che si utilizza per eseguire le query. Ad esempio, per the mysql command line tool, faresti:

mysql -u<user> -p<password> -h<host> -Nrs -e"SELECT version() FROM system" > out.txt 

Qui, il pezzo che va mysql -u<user> -p<password> -h<host> sono le opzioni standard per la connessione al server. -Nrs sono un insieme di opzioni che faranno in modo che il client non trasmetta tutta la grafica ascii per i risultati. Il bit che va a -e"SELECT version() FROM system" specifica in realtà il comando che deve essere eseguito. Vedi http://dev.mysql.com/doc/refman/5.1/en/mysql-command-options.html per maggiori informazioni su quelle opzioni specifiche di mysql. Cerca opzioni simili nello strumento client che desideri utilizzare.

L'ultimo bit, > out.txt è un reindirizzamento standard a livello di sistema operativo. Ciò causerà la memorizzazione dell'output proveniente dal programma mysql in un file out.txt, ma forse è possibile reindirizzare direttamente al programma NSIS.

2

Prova

sqlplus user/[email protected] @query.sql > result.txt 

dove query.sql contiene la query di database e result.txt sarà riempito con il risultato di una query.

A seconda della query, il file di output potrebbe non essere come previsto (intestazioni di colonna ecc. Come tipico di sqlplus), quindi query.sql dovrebbe contenere alcuni comandi SET per regolare l'output in base alle proprie esigenze.

Un altro metodo consiste nell'utilizzare il comando SPOOL Oracle invece di eseguire il piping del risultato su un file.

+0

è buona, ma la formattazione delle colonne non sta bene ... –