Вывод сценария SQL Developer в сетку данных

В Oracle SQL Developer я могу получать простые результаты запроса, возвращаемые в сетке «Результаты запроса», но если мне нужно использовать переменную в скрипте, мне нужно использовать опцию «Выполнить скрипт», и мои результаты отображаются в «Вывод скрипта». window, и я не могу экспортировать его в формат csv. Вот мой пример кода:

    var CatCode char(5) ;
    exec :CatCode := 'ZK';
    SELECT * FROM Products WHERE CategoryCode = :CatCode;

Любая помощь будет оценена. Спасибо.


person mak101    schedule 28.03.2018    source источник


Ответы (3)


Вот, вы можете запустить это, чтобы убедиться. он работает.

    set colsep ,     -- separate columns with a comma
    set pagesize 0   -- No header rows
    set trimspool on -- remove trailing blanks
    set headsep off  -- this may or may not be useful...depends on your headings.
    set linesize X   -- X should be the sum of the column widths
    set numw X       -- X should be the length you want for numbers (avoid scientific notation on IDs)

    spool C:\Users\**direcotory**\sql\Test1.csv; --this is file path to save data
    var CatCode char(5) ;
    exec :CatCode := 'ZK';
    SELECT * FROM Products WHERE CategoryCode = :CatCode;
    spool off;
person Paras    schedule 30.03.2018

Просто добавьте /*csv*/ в свой запрос, инструмент автоматически вернет результат в CSV при выполнении как скрипт (F5).

Или используйте вместо этого переменную подстановки. & Var vs: Var, запустите с F9, SQLDev предложит вам ввести значение.

VAR stcode CHAR(2);

EXEC :stcode := 'NC';

SELECT /*csv*/
    *
  FROM
    untappd
 WHERE
    venue_state   =:stcode;

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

Или перейти прямо к сетке, чтобы вы могли использовать функцию экспорта сетки.

SELECT
    *
  FROM
    untappd
 WHERE
    venue_state   =:stcode2;

Выполнить с помощью Ctrl + Enter или F9

Укажите входной параметр во всплывающем диалоговом окне, нажмите OK.

Шазам.

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

person thatjeffsmith    schedule 28.03.2018
comment
Да, работает, но мне нужно в сетке данных. Мой запрос возвращает более 50 000 записей, и мне нужно экспортировать его в csv. У меня недостаточно прав для создания процедуры, поэтому я должен делать это только на листе. Есть ли другое решение для экспорта результатов запроса в CSV? - person mak101; 29.03.2018
comment
В моем фактическом запросе есть множество переменных, и большую часть времени они будут иметь значение по умолчанию. Поэтому мне не нужно всплывающее окно для значений, я бы просто изменил скрипт и запустил. - person mak101; 29.03.2018
comment
@ mak101, так что не делайте этого, запустите его как скрипт, используйте комментарий CSV и загрузите его как файл. он будет работать быстрее и с меньшим количеством шагов. - person thatjeffsmith; 29.03.2018
comment
@ mak101 вы можете буферизовать 50k записей в CSV, используя мое решение ... или с небольшими вариациями - person thatjeffsmith; 29.03.2018

Спасибо @thatjeffsmith и Paras, опция катушки дала мне новое направление, и это сработало. Я немного изменил ваш код, и он отлично работает.

var CatCode char(5) ;
exec :CatCode := 'ZK';
set feedback off;
SET SQLFORMAT csv;
spool "c:\temp\spoolTest.csv"
SELECT * FROM Products WHERE CategoryCode = :CatCode;
spool off;
SET SQLFORMAT;
set feedback on;
person mak101    schedule 30.03.2018
comment
У меня есть еще один вопрос, как мне выполнить буферизацию в динамический файл? Я хочу добавить CatCode в свое имя файла, я пробовал: var csvFile varchar2 (100) exec: csvFile: = 'c: \ temp \ MyCSV_' || обрезать (: CatCode) || '.csv'; spool csvFile Но это не работает. Какие-нибудь советы? - person mak101; 30.03.2018