Як експортувати результат запиту до CSV в Oracle SQL Developer?


240

Я використовую Oracle SQL Developer 3.0. Намагаючись розібратися, як експортувати результат запиту в текстовий файл (бажано CSV). Клацання правою кнопкою миші на вікні результатів запитів не дає мені жодних варіантів експорту.


Відповіді:


376

Версія, яку я використовую

alt текст

Оновлення 5 травня 2012 року

Джефф Сміт провів блог, показуючи, що я вважаю, що це найкращий метод отримати CSV вихід від SQL Developer. Метод Джеффа показаний нижче як метод 1:

Спосіб 1

Додайте коментар /*csv*/до свого SQL-запиту та запустіть запит як сценарій (використовуючи F5 або 2-ю кнопку виконання на панелі інструментів робочого листа)

введіть тут опис зображення

Це воно.

Спосіб 2

Запустіть запит

alt текст

Клацніть правою кнопкою миші та виберіть "Вивантажити".

Оновлення. У програмі Sql для версії 3.0.04 вивантаження було змінено на експорт. Завдяки Яніс Пейсеньекс за вказівку на це

alt текст

Перероблений знімок екрана для SQL Developer Version 3.0.04

введіть тут опис зображення

У спадному форматі виберіть CSV

alt текст

І дотримуйтесь решти інструкцій на екрані.


25
+1. Термін "Вивантажити" мені здається антиінтуїтивним. "Завантажити" деякі дані - означає вставити їх у базу даних; тому "Вивантажити" повинно означати, що дані видалено ...
Джеффрі Кемп

8
У версії 3.0.04 цю опцію було перейменовано на Експорт.
Janis Peisenieks

2
Чудово. ps верхній регістр /*CSV*/не працював для мене, але нижній регістр /*csv*/зробив. Дякую!
Еран Медан

3
Також зауважте, що метод 2 може зіткнутися з помилкою (все ще присутній у моїй версії 3.0.04), де вона просто зависла з великим числом рядків (3К рядків або близько того). Я використовую цю стару шкільну SQLPLUS, оскільки спочатку я не бачив способу 1, але деяким може сподобатися такий: {code} SET UNDERLINE OFF SET COLSEP ',' SET LINES 20000 PAGES 20000 SET FEEDBACK off - необов’язкове SET HEADING вимкнено Шпулька C: \ Export \ EMP.csv - Зворотній запит ВИБІР * ВІД ЕМП; Spool OFF
Jim P

1
@topr Використовуйте метод 1, потім виберіть все, скопіюйте та вставте в текстовий редактор і збережіть як csv. Можливо, ви навіть зможете вставити безпосередньо в Excel, але я не впевнений у цьому.
Тревіс

45

Не точно "експортувати", але ви можете вибрати рядки (або Ctrl- Aщоб вибрати їх усі) в сітці, яку ви хочете експортувати, а потім скопіювати з Ctrl- C.

За замовчуванням обмежено вкладку. Ви можете вставити його в Excel або інший редактор і маніпулювати роздільниками все, що вам подобається.

Крім того, якщо ви використовуєте Ctrl- Shift- Cзамість Ctrl- C, ви також копіюєте заголовки стовпців.


5
дивовижно, я спеціально дивився на те, як копіювати заголовки. Дякую!
mishkin

3
Єдине питання, якщо у вас багато рядків, це означає, що доведеться ще раз запитувати весь набір даних. і якщо це тривалий запит, це означає, що ви чекаєте багато першої сторінки, а потім багато чекаєте на всіх сторінках після натискання клавіші ctrl + A. Іншими словами, чудове рішення, але працює лише більшу частину часу та для відносно швидших чи менших запитів.
Еран Медан

Якщо рахувати довгий ряд, він зніме ваші скопійовані речі! Не використовуйте це.
Хеш

@Mark Ніколи не бачив, щоб це сталося самому. Чи зберігалось лише перші 50 рядів чи щось подібне? Якщо так, то для цього є окрема перевага. Він копіює лише те, що зараз знаходиться в сітці, але якщо прокрутити до нижньої частини сітки, SQL Dev автоматично отримає більше рядків, тож я можу побачити, як хтось може інтерпретувати це як помилку.
BQ.

1
Я спробував це зробити на 43К рядків даних, і він просто працює назавжди - швидше експорт опції. Це приголомшливо, якщо у вас є лише кілька рядків даних.
izikandrw

28

FYI, ви можете замінити /*csv*/ інші формати, включаючи /*xml*/і /*html*/. select /*xml*/ * from empповерне xml документ із результатами запиту, наприклад. Я наткнувся на цю статтю, шукаючи простий спосіб повернути xml із запиту.


4
/ * вставка * / є особливо корисною.
jeremyjjbrown

Куди йдуть файли?
Аномалія

Ну неважливо, я заглянув над частиною "запустити як сценарій", не розуміючи, що це відрізняється від звичайної кнопки запуску.
Аномалія

4

FYI, тому що кожен, хто стикається з проблемами, у експорті часових міток CSV є помилка, яку я просто провів кілька годин, працюючи навколо. Деякі поля, які мені потрібно було експортувати, мали тип часової позначки. Здається, опція експорту CSV навіть у поточній версії (3.0.04 станом на цю публікацію) не в змозі поставити символи групування навколо часових позначок. Дуже засмучує, оскільки пробіли у часових марках порушили мій імпорт. Найкращий спосіб, який я знайшов, - це написати свій запит TO_CHAR () на всіх моїх часових позначках, що дає правильний результат, хоч і трохи більше роботи. Я сподіваюся, що це заощадить когось деякий час або отримає Oracle на кулі при їх наступному випуску.


1
У моїй версії 3.0.04 все ще є помилка, де вона просто зависає з більшим експортом (моя - 3К рядків). Моє просте виправлення було замість цього використовувати SQLPLUS:
Jim P

У моєму випадку Тип просторових даних ( docs.oracle.com/cd/B19306_01/appdev.102/b14255/… ) експортувався таким чином ( помічайте коми), MDSYS.SDO_GEOMETRY(2001,8307,MDSYS.SDO_POINT_TYPE(-122.39096,37.79251,NULL),NULL,NULL)не загортаючись у лапки. І я використовую динамічний SQL, тому я не можу TO_CHAR () цих стовпців. Будь-які пропозиції?
Червоний горох

Хоча я використовую Dynamic SQL і просто вибираю *, (і я не хочу змінювати це для виключення для одного стовпця SQL просторових даних), можливо, я можу спробувати дві речі: 1) Використовувати інший COLSEP, як '|' або 2) Перед оператором SELECT вкажіть, як слід форматувати цей стовпець, використовуючи docs.oracle.com/cd/B19306_01/server.102/b14357/ch12013.htm
Red Pea

2

Щоб здійснити експорт у вашу локальну систему від 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

CSV-експорт не уникає ваших даних. Слідкуйте за рядками , які закінчуються в \тому що получающаяся \"буде виглядати як уцілілих , "а не \. Тоді ви маєте неправильну кількість "і весь ряд зламаний.


Це, мабуть, не помилка - ви можете вирішити, як уникнути котирування, а за замовчуванням - уникнути цього з іншим символом цитати, а не з поворотом. У такому випадку "foo\"- це цілком коректний рядок з цитуванням.
Кен Вільямс

Досить просто замінити кожне виникнення \ на \, якщо ви знаєте про це заздалегідь. Дякую!
jpaugh

Так, досить просто і, ймовірно, неправильно для більшості інструментів імпорту CSV.
Вормбо
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.