Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Можно ли в sqplus вывести в файл только непосредственно рекордсет? / 7 сообщений из 7, страница 1 из 1
03.06.2017, 01:13
    #39465064
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в sqplus вывести в файл только непосредственно рекордсет?
Мне нужно сформировать текстовый файл.
У меня есть SQL-запрос примерно такого вида:
Код: plsql
1.
2.
select ... as LINE
from ...


sqlplus вызываю примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
sqlplus ... <<EOF > /dev/null
set linesize 1000
set pagesize 0
set term off
set echo off
set head off
column LINE heading '' format a200
spool result.txt
select ... as LINE
from ...;
spool off
exit
EOF
Но в файле все равно есть посторонние строки (выполнение SQL, команда spool off и т.п.).
Их конечно можно убрать с помощью grep и head/tail.
А можно ли сделать так, чтобы в файл попало только содержимое выборки?
...
Рейтинг: 0 / 0
03.06.2017, 01:30
    #39465065
coborhc
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в sqplus вывести в файл только непосредственно рекордсет?
Если использование SQL*PLUS не принципиально, то в sqlpptool.com скрипт вида:
spool c:\temp\test.txt
select
'test_line_' || level as str_field
from dual
connect by level <= 10;
spool off;

помещает в файл только строки выборки
...
Рейтинг: 0 / 0
03.06.2017, 01:39
    #39465066
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в sqplus вывести в файл только непосредственно рекордсет?
Именно sqlplus использовать не обязательно.
Но утилита должна быть бесплатной и под Linux.
...
Рейтинг: 0 / 0
03.06.2017, 02:19
    #39465069
coborhc
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в sqplus вывести в файл только непосредственно рекордсет?
Не знаю, как под Linux, но в Win SQL*PLUS есть разница, как выполнять скрипт.
Сейчас поэкспериментировал.
Если выполнить команды скрипта непосредственно в окне, то в файле результата есть "лишние" строки.
Но если скрипт поместить в файл и из PLUS-а выполнить посредством команды:
@script_filename.sql
то в результирующем файле "лишних" строк нет.
...
Рейтинг: 0 / 0
03.06.2017, 02:39
    #39465070
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в sqplus вывести в файл только непосредственно рекордсет?
Командами окончательно убрать лишний текст так и не удалось.
А вот опция -s делает то что нужно.
...
Рейтинг: 0 / 0
03.06.2017, 09:12
    #39465090
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в sqplus вывести в файл только непосредственно рекордсет?
Конечный вариант:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
sqlplus -S usr/pwd@//server:port/db <<EOF > /dev/null
set SQLPROMPT ''
set SQLNUMBER off
set ESCAPE '\'
set ECHO off
set VERIFY off
set SERVEROUTPUT off
set TERM off
set TERMOUT off
set HEADING off
set HEAD off
set FEEDBACK off
set FEED off
set WRAP off
set TRIMOUT on
set TRIMSPOOL on
set PAGESIZE 0
set LINESIZE 0
set PAGES 0

spool sessions.txt
<sql-запрос>;
spool off

exit
EOF
Не знаю, может что-то лишнее, но в таком виде получаю нужное — текстовый файл без лишних данных.
...
Рейтинг: 0 / 0
05.06.2017, 13:00
    #39465826
Где-то так
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в sqplus вывести в файл только непосредственно рекордсет?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
set linesize 120 - по желанию
set pagesize 0
set timing off
set feedback off
set verify off
set head off
set echo off
set trimspool on
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Можно ли в sqplus вывести в файл только непосредственно рекордсет? / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]