Odpowiedzi:
Bieg,
teraz, gdy sqlcl jest dostępny z Oracle SQL Developer 4.1 EA2 (4.1.0.18.37) , możesz go używać podobnie jak stary i sławny sqlplus. sqlcl ma ustawienie formatu wyjściowego dla csv
set sqlformat csv
spool x.csv
select * from yourtable[s];
spool off
aby uzyskać więcej informacji o sqlcl kasie blog Krisa
zanim sqlcl był najłatwiejszy, można było użyć APEX-a i wyeksportować raport do csv. W zwykłym starym sqlplus możesz to zrobić za pomocą
set lines 9999 -- the appropriate size
set head off -- no header lines
set colsep ';' --column separator to ;
set pages 0 -- no pages
set feed off
select your data;
spool to_tofile
/
spool off
Działa to najlepiej, jeśli wyniki mają zostać zapisane na serwerze aplikacji lub kliencie. Jeśli muszą być zapisane na serwerze bazy danych, lepszym rozwiązaniem może być plik_spl.
Ronald.
Powinieneś spojrzeć na wbudowany pakiet UTL_FILE . Jest kilka sposobów na wykorzystanie go.
Możesz napisać dowolną liczbę procedur w pakietach, które używają pakietu UTL_FILE do zapisu do dowolnej liczby plików. Procedury te można następnie wywołać z niemal dowolnej aplikacji, w tym SQL * Plus.
Możesz napisać skrypt PL / SQL, aby wykonać tę samą pracę i wywołać skrypt z poziomu wiersza poleceń SQL * Plus, podając @scriptname w wierszu polecenia.
Możesz wkleić blok przy użyciu UTL_FILE bezpośrednio do SQL * Plus, ale należy tego użyć tylko do jednorazowego eksportu i nawet wtedy może nie być najlepszą trasą.
W najprostszym przypadku eksport pliku przy użyciu UTL_FILE składałby się z wywołania do FOPEN , jednego lub więcej wywołań do PUT_LINE i wywołania do FCLOSE .
Jeśli problemem jest wydajność, możesz rozważyć użycie narzędzi od dostawców.
Oceniłem narzędzia od BMC, Wisdomforce, CoSort, DBCrane. Wszystkie są znacznie szybsze niż bufor, plik utl_file lub tabela zewnętrzna. Używamy DBCrane, ponieważ mój szef nie chciał wydawać zbyt dużo na licencję.
Możesz użyć Pythona i modułu cx_Oracle do wyodrębnienia danych na dysk w formacie CSV.
Oto jak połączyć się z Oracle za pomocą cx_Oracle:
constr='scott/tiger@localhost:1521/ORCL12'
con = cx_Oracle.connect(constr)
cur = con.cursor()
Po pobraniu danych możesz przeglądać listę Pythona i zapisywać dane w formacie CSV.
for i, chunk in enumerate(chunks(cur)):
f_out.write('\n'.join([column_delimiter.join(row[0]) for row in chunk]))
f_out.write('\n')
Zastosowałem to podejście, kiedy napisałem TableHunter-For-Oracle