2010-02-19 17 views
7

Chcę uruchomić 200+ wybranych zapytań i dołączyć wyniki do pliku. Wszystkie zapytania są tą samą różnicą w zmiennej daty i czasu. Nie mam uprawnień do tworzenia rutyny, dlatego musiałem utworzyć wszystkie zapytania. Nie mam uprawnień do tworzenia widoku lub innej tabeli do przechowywania wyników. Nie mam dostępu do PL/SQL.Oracle 10g - Zapisywanie wyników zapytań do pliku

Teraz muszę utworzyć raport z wynikami każdego z tych zapytań (wszystkie wyniki są liczbami całkowitymi), ale nie wydaje mi się, aby znaleźć inne rozwiązanie, ale aby uruchomić jeden po drugim i skopiować wyniki jeden po drugim .

Każdy z was cudowny mózg może mi w tym pomóc? To trochę pilne.

Odpowiedz

4

1 - Umieść swoje zapytania w pliku tekstowym tak:

set pagesize 0; 

select some_field 
from some_table; 

select another_field 
from another_table; 
/

2 - Zapisz gdzieś (let's sa yc: \ my_file.sql)

3 - Run to w wierszu poleceń:

c:\>sqlplus -s username/[email protected] <tmp.sql> output.txt 

4 - look inside "output.txt"

+0

Wciąż musiał "odrzucić echo", prawda? W przeciwnym razie ciąg zapytania nie byłby na wyjściu? – FrustratedWithFormsDesigner

+0

Doskonały Joseph. Spróbuję też tego. Dziękuję Ci!! – Daniel

+0

Mimo że zapytanie nie znajduje się na wyjściu, nazwa kolumny jest. Czy istnieje sposób, żeby się z tym pogodzić? – Daniel

2

Możesz przesyłać dane wyjściowe do pliku.

Zobacz instrukcję spool (URL - Oracle 10.2 użytkownika).

również:

http://www.praetoriate.com/t_garmany_easysql_the_spool_command.htm

I co wydaje się być kilka wskazówek układ:

http://www.oracle.com/technology/oramag/code/tips2004/020904.html

+0

Próbowałem już tego i nie działało całkiem dobrze. Przechowuje ciąg kwerendy, a także rodzaj przerw, jeśli uruchomię 10 zapytań w tym samym czasie. – Daniel

+0

wypróbuj 'set echo off;' przed uruchomieniem zapytania. Zapobiega to wyświetlaniu ciągu zapytania. Oczywiście, z 'echo' był na początku skryptu, pamiętaj, aby włączyć go z powrotem na końcu. Zawsze zostawiaj rzeczy w takim stanie, w jakim je znalazłeś;) – FrustratedWithFormsDesigner

+0

Spróbuję tego. – Daniel

0

Jeśli masz dostęp do sqlplus można uruchomić anonimowe bloki PL/SQL.

DECLARE 
v_cnt number; 
BEGIN 
select ... into v_cnt ...; 
dbms_output.put_line(v_cnt); 
END; 
. 
spool out.log 
/
spool off 
Powiązane problemy