Как экспортировать результат запроса в csv в Oracle SQL Developer?

240

Я использую Oracle SQL Developer 3.0. Попытка выяснить, как экспортировать результат запроса в текстовый файл (предпочтительно CSV). Щелчок правой кнопкой мыши в окне результатов запроса не дает мне никаких вариантов экспорта.

Кен Лю
источник

Ответы:

376

Версия, которую я использую

альтернативный текст

Обновление 5 мая 2012

Джефф Смит в своем блоге показывает, что я считаю, что это лучший способ получить CSV-вывод от SQL Developer. Метод Джеффа показан как метод 1 ниже:

Способ 1

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

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

Вот и все.

Способ 2

Запустить запрос

альтернативный текст

Щелкните правой кнопкой мыши и выберите выгрузить.

Обновить. В Sql Developer версии 3.0.04 выгрузка была изменена на экспорт. Спасибо Janis Peisenieks за указание на это

альтернативный текст

Обновленный снимок экрана для SQL Developer версии 3.0.04

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

Из выпадающего формата выберите CSV

альтернативный текст

И следуйте остальным инструкциям на экране.

Ян Карпентер
источник
25
+1. Термин «разгрузка» мне кажется антиинтуитивным. «Загрузить» некоторые данные означает вставить их в базу данных; поэтому «Разгрузка» должна означать, что данные удалены ...
Джеффри Кемп
8
В версии 3.0.04 эта опция была переименована в Экспорт.
Янис Пейзениекс
2
Отлично. ps прописные буквы /*CSV*/у меня не сработали, а строчные /*csv*/. Спасибо!
Эран Медан
3
Также обратите внимание, что метод 2 может привести к ошибке (все еще присутствует в моей версии 3.0.04), когда он просто зависает с большим количеством строк (3K строк или около того). Я использую этот старый школьный SQLPLUS, потому что сначала я не видел способ 1 выше, но некоторым может понравиться это: {code} SET UNDERLINE OFF SET COLSEP ',' SET LINES 20000 PAGES 20000 SET FEEDBACK выкл - опция SET HEADING выкл Буфер C: \ Export \ EMP.csv - теперь запрос SELECT * FROM EMP; Катушка выключена
Джим П
1
@topr Используйте метод 1, затем выберите все, скопируйте и вставьте в текстовый редактор и сохраните как CSV. Возможно, вы даже сможете вставить непосредственно в Excel, но я не уверен в этом.
Трэвис
45

Не совсем «экспорт», но вы можете выбрать строки (или Ctrl- Aвыбрать все из них) в сетке, которую вы хотите экспортировать, а затем скопировать с помощью Ctrl- C.

По умолчанию используется табуляция. Вы можете вставить это в Excel или другой редактор и манипулировать разделителями так, как вам нравится.

Кроме того, если вы используете Ctrl- Shift- Cвместо Ctrl- C, вы также скопируете заголовки столбцов.

BQ.
источник
5
Круто, я специально искал, как копировать заголовки. Спасибо!
Мишкин
3
Единственная проблема, если у вас много строк, это будет означать, что придется снова запросить весь набор данных. и если это длительный запрос, это означает, что вы ожидаете много времени для первой страницы, а затем много ждете для всех страниц после нажатия Ctrl + A. другими словами, отличное решение, но работает только большую часть времени и для относительно быстрых или небольших запросов.
Эран Медан
При подсчете длинных рядов он скопирует ваши скопированные данные! Не используйте это.
Хэш
@ Марк Никогда не видел, чтобы это случилось. Он сохранил только первые 50 строк или что-то в этом роде? Если так, то для этого есть отдельное предпочтение. Он только копирует то, что в данный момент находится в сетке, но если вы прокрутите до конца сетки, SQL Dev автоматически выберет больше строк, так что я могу видеть, как кто-то может интерпретировать это как ошибку.
БК.
1
Я попытался сделать это на 43K строках данных, и это просто работает навсегда - возможность экспорта намного быстрее. Это замечательно, если у вас есть только несколько строк данных.
izikandrw
28

К вашему сведению, вы можете заменить /*csv*/ другие форматы, включая /*xml*/и /*html*/. /*xml*/ * from empНапример, select возвращает документ XML с результатами запроса. Я наткнулся на эту статью, когда искал простой способ вернуть XML из запроса.

Ив Рошон
источник
4
/ * insert * / особенно полезен.
jeremyjjbrown
Куда идут файлы?
Аномалия
Ах, неважно, я замял часть «запустить как скрипт», не понимая, что это отличается от обычной кнопки запуска.
Аномалия
4

К сведению тех, кто сталкивается с проблемами, в экспорте меток времени CSV есть ошибка, над которой я потратил несколько часов. Некоторые поля, которые мне нужно было экспортировать, имели метку времени. Похоже, что опция экспорта CSV даже в текущей версии (на момент публикации 3.0.04) не помещает символы группировки вокруг отметок времени. Очень расстраивает, так как пробелы во временных метках сломали мой импорт. Лучший обходной путь, который я нашел, состоял в том, чтобы написать свой запрос с TO_CHAR () для всех моих временных отметок, что дает правильный вывод, хотя и с небольшой дополнительной работой. Я надеюсь, что это сэкономит кому-то время или заставит Oracle выйти на новый уровень.

BoeroBoy
источник
1
В моей версии 3.0.04 все еще есть ошибка, из-за которой она просто зависает при большем экспорте (у меня 3K строк). Моим простым решением было использовать вместо этого SQLPLUS:
Джим П
В моем случае тип пространственных данных ( 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 () эти столбцы. Какие-либо предложения?
Красный горох
Несмотря на то, что я использую динамический SQL и просто выбираю *, (и я не хочу изменять это для исключения для отдельного столбца SQL пространственных типов данных), возможно, я мог бы попробовать две вещи: 1) Использовать другой COLSEP, например '|' или 2) Перед оператором SELECT укажите, как должен быть отформатирован этот столбец, с помощью docs.oracle.com/cd/B19306_01/server.102/b14357/ch12013.htm
Красная гороха
2

Взять экспорт в вашу локальную систему от sql developer.

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 Export не скрывает ваши данные. Остерегайтесь строк, которые заканчиваются, \потому что результат \"будет выглядеть как экранированный, "а не как \. Тогда у вас неправильное число "и весь ваш ряд оборван.

Джон
источник
Вероятно, это не ошибка - вы можете решить, как экранировать кавычки, и по умолчанию экранирование выполняется с помощью другого символа кавычки, а не обратной косой черты. В этом случае "foo\"это совершенно корректная строка в кавычках.
Кен Уильямс
Достаточно просто заменить каждый случай \ на \\, если вы знаете об этом заранее. Спасибо!
jpaugh
Да, достаточно просто и, вероятно, неправильно для большинства инструментов импорта CSV.
Wormbo