Jak wyeksportować wynik zapytania do csv w Oracle SQL Developer?


Odpowiedzi:


376

Wersja, której używam

alternatywny tekst

Aktualizacja 5 maja 2012 r

Jeff Smith napisał na blogu , że moim zdaniem jest to najlepsza metoda uzyskania danych wyjściowych CSV od SQL Developer. Metoda Jeffa jest pokazana jako Metoda 1 poniżej:

Metoda 1

Dodaj komentarz /*csv*/do zapytania SQL i uruchom zapytanie jako skrypt (używając F5 lub drugiego przycisku wykonania na pasku narzędzi arkusza roboczego)

wprowadź opis zdjęcia tutaj

Otóż ​​to.

Metoda 2

Uruchom zapytanie

alternatywny tekst

Kliknij prawym przyciskiem myszy i wybierz rozładuj.

Aktualizacja. W Sql Developer Version 3.0.04 zmieniono wyładunek na eksport Dzięki Janis Peisenieks za zwrócenie na to uwagi

alternatywny tekst

Zmieniony zrzut ekranu dla SQL Developer w wersji 3.0.04

wprowadź opis zdjęcia tutaj

Z rozwijanego formatu wybierz CSV

alternatywny tekst

I postępuj zgodnie z pozostałymi instrukcjami wyświetlanymi na ekranie.


25
+1. Termin „rozładuj” wydaje mi się antyintuicyjny. „Załadować” niektóre dane oznacza wstawienie ich do bazy danych; dlatego „Zwolnij” powinno oznaczać, że dane zostały usunięte ...
Jeffrey Kemp,

8
W wersji 3.0.04 zmieniono nazwę tej opcji na Eksport.
Janis Peisenieks,

2
Wspaniały. ps wielkie litery /*CSV*/nie działały dla mnie, ale małe litery działały /*csv*/. dzięki!
Eran Medan

3
Zauważ też, że metoda 2 może napotkać błąd (wciąż obecny w mojej wersji 3.0.04), w którym po prostu zawiesza się z dużą liczbą wierszy (około 3K wierszy). Korzystam z tej starej szkoły SQLPLUS, ponieważ nie widziałem wcześniej metody 1 powyżej, ale niektórym może się spodobać: {kod} USTAW PODNIESIENIE WYŁĄCZ USTAWIENIE ZBIORNIKA, 'USTAW LINIE 20000 STRON 20000 USTAW INFORMACJE ZWROTOWE wyłączone - opcjonalne USTAW HEADING wyłączone Spool C: \ Export \ EMP.csv - Teraz zapytanie SELECT * FROM EMP; Wyłącz szpulę
Jim P

1
@topr Użyj metody 1, a następnie zaznacz wszystko, skopiuj i wklej do edytora tekstu i zapisz jako csv. Możesz nawet być w stanie wkleić bezpośrednio do Excela, ale nie jestem tego pewien.
Travis

45

Nie do końca „eksportowanie”, ale możesz wybrać wiersze (lub Ctrl- Aaby zaznaczyć wszystkie) w siatce, którą chcesz wyeksportować, a następnie skopiować za pomocą Ctrl- C.

Domyślnie jest rozdzielany tabulatorami. Możesz wkleić to do Excela lub innego edytora i manipulować ogranicznikami według własnego uznania.

Ponadto, jeśli użyjesz Ctrl- Shift- Czamiast Ctrl- C, skopiujesz również nagłówki kolumn.


5
niesamowite, szukałem właśnie sposobu kopiowania nagłówków. dzięki!
mishkin,

3
Jedyny problem, jeśli masz dużo wierszy, będzie to oznaczać, że będzie musiał ponownie wysłać zapytanie do całego zestawu danych. a jeśli jest to długo działające zapytanie, oznacza to, że dużo czekasz na pierwszą stronę, a następnie dużo czekasz na wszystkie strony po naciśnięciu klawiszy Ctrl + A. innymi słowy, świetne rozwiązanie, ale działa tylko przez większość czasu i dla stosunkowo szybszych lub mniejszych zapytań.
Eran Medan

Przy liczeniu w długim rzędzie usunie skopiowane rzeczy! Nie używaj tego.
Hash

@ Mark Nigdy tego nie widziałem. Czy zachowało tylko pierwsze 50 wierszy czy coś takiego? Jeśli tak, istnieje osobna preferencja. Kopiuje tylko to, co aktualnie znajduje się w siatce, ale jeśli przewiniesz na dół siatki, SQL Dev automatycznie pobierze więcej wierszy, dzięki czemu mogę zobaczyć, jak ktoś może zinterpretować to jako błąd.
BQ.

1
Próbowałem to zrobić dla 43 000 wierszy danych i działa to po prostu wiecznie - opcja eksportu znacznie szybciej. Jest to niesamowite, jeśli masz tylko kilka wierszy danych.
izikandrw

28

FYI, możesz zastąpić /*csv*/ inne formaty, w tym /*xml*/i /*html*/. select /*xml*/ * from empzwróci na przykład dokument XML z wynikami zapytania. Natknąłem się na ten artykuł, szukając łatwego sposobu na zwrócenie xml z zapytania.


4
/ * insert * / jest szczególnie użyteczny.
jeremyjjbrown

Gdzie idą pliki?
Anomalia

Ach, nieważne, przeszukałem część „Uruchom jako skrypt”, nie zdając sobie sprawy, że różni się to od zwykłego przycisku uruchamiania.
Anomalia

4

Dla każdego, kto ma problemy, w eksporcie sygnatury czasowej CSV jest błąd, który spędziłem kilka godzin nad tym, pracując. Niektóre pola, które musiałem wyeksportować, były typu datownik. Wygląda na to, że opcja eksportu CSV nawet w bieżącej wersji (3.0.04 od tego postu) nie umieszcza symboli grupowania wokół znaczników czasu. Bardzo frustrujące, ponieważ spacje w znacznikach czasu zepsuły mój import. Najlepszym obejściem, jakie znalazłem, było napisanie zapytania za pomocą TO_CHAR () na wszystkich moich znacznikach czasu, co daje prawidłowe dane wyjściowe, choć przy odrobinie więcej pracy. Mam nadzieję, że to pozwoli komuś zaoszczędzić trochę czasu lub sprawi, że Oracle pojawi się w kolejce po kolejnym wydaniu.


1
W mojej wersji 3.0.04 nadal występuje błąd polegający na tym, że po prostu zawiesza się z większym eksportem (mój to 3K wierszy). Moją prostą poprawką było użycie SQLPLUS zamiast:
Jim P

W moim przypadku typ danych przestrzennych ( docs.oracle.com/cd/B19306_01/appdev.102/b14255/... ) był eksportowany w ten sposób (zauważ przecinki) MDSYS.SDO_GEOMETRY(2001,8307,MDSYS.SDO_POINT_TYPE(-122.39096,37.79251,NULL),NULL,NULL)bez zawijania w cudzysłowie. Używam dynamicznego SQL, więc nie mogę TO_CHAR () tych kolumn. Jakieś sugestie?
The Red Pea

Mimo że korzystam z dynamicznego SQL i po prostu wybieram * (i nie chcę tego modyfikować dla wyjątku dla pojedynczej kolumny SQL typu danych przestrzennych), może mógłbym spróbować dwóch rzeczy: 1) Użyj innego COLSEP jak „|” lub 2) Przed instrukcją SELECT określ sposób formatowania tej kolumny, używając docs.oracle.com/cd/B19306_01/server.102/b14357/ch12013.htm
The Red Pea

2

Aby wyeksportować do lokalnego systemu od dewelopera sql.

Path : C:\Source_Table_Extract\des_loan_due_dtls_src_boaf.csv

    SPOOL "Path where you want to save the file"
    SELECT /*csv*/ * FROM TABLE_NAME;

1

Eksport CSV nie ucieka od twoich danych. Uważaj na łańcuchy, które kończą się na, \ponieważ wynikowy \"będzie wyglądał jak "znak ucieczki, a nie \. Następnie masz niewłaściwą liczbę "i cały wiersz jest zepsuty.


Prawdopodobnie nie jest to błąd - możesz zdecydować, w jaki sposób cytaty mają być zastępowane, a domyślnie jest to znak innej postaci, a nie odwrotny ukośnik. W takim przypadku "foo\"jest idealnie poprawnym cytowanym ciągiem.
Ken Williams

Wystarczająco proste jest zastąpienie każdego wystąpienia \ \ \, jeśli wiesz o tym wcześniej. Dzięki!
jpaugh

Tak, dość proste i prawdopodobnie złe dla większości narzędzi do importu CSV.
Wormbo,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.