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

187

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

Теги:
csv
export
oracle-sqldeveloper

5 ответов

309
Лучший ответ

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

Изображение 7123

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

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

Метод 1

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

Изображение 7124

Что это.

Метод 2

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

Изображение 7125

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

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

Изображение 7126

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

Изображение 7127

В раскрывающемся списке выберите CSV

Изображение 7128

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

  • 23
    +1. Термин «разгрузка» мне кажется антиинтуитивным. «Загрузить» некоторые данные означает вставить их в базу данных; поэтому «Unload» должно означать, что данные удалены ...
  • 0
    Полностью согласен, Джеффри
Показать ещё 17 комментариев
34

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

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

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

  • 5
    Круто, я специально искал, как копировать заголовки. Спасибо!
  • 3
    Единственная проблема, если у вас много строк, это будет означать, что придется снова запросить весь набор данных. и если это длительный запрос, это означает, что вы ожидаете много времени для первой страницы, а затем много ждете для всех страниц после нажатия Ctrl + A. другими словами, отличное решение, но работает только большую часть времени и для относительно быстрых или небольших запросов.
Показать ещё 4 комментария
24

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

  • 4
    / * insert * / особенно полезен.
2

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

  • 1
    В моей версии 3.0.04 все еще есть ошибка, из-за которой она просто зависает при большем экспорте (у меня 3K строк). Моим простым решением было использовать вместо этого SQLPLUS:
  • 0
    В моем случае тип пространственных данных ( 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 () эти столбцы. Какие-либо предложения?
Показать ещё 1 комментарий
1

Экспорт CSV не удаляет ваши данные. Следите за строками, которые заканчиваются на \, потому что полученный \" будет выглядеть как экранированный ", а не \. Тогда у вас неправильный номер ", и вся ваша строка сломана.

  • 0
    Это, вероятно, не ошибка - вы можете решить, как экранировать кавычки, и по умолчанию это экранирование с другим символом кавычки, а не с обратной косой чертой. В этом случае "foo\" - это совершенно корректная строка в кавычках.
  • 0
    Достаточно просто заменить каждый случай \ на \\, если вы знаете об этом заранее. Спасибо!
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню