Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Выгрузка таблицы в файлы  [new]
adminsamara
Member

Откуда: Самара
Сообщений: 545
Возможно ли ?!
Есть огромная таблица, 10 столбцов, но нам интересны 2 (NOMER, DATA)
Как через sqlplus выгрузить файлы за каждый день?
в таком виде :
01012015.csv
02012015.csv
03012015.csv
.......
=========================================================================
За текущий день у меня получается так

содержание bat
sqlplus -s *****/*****@127.0.0.1/db @C:\sql\1.sql > C:\nomer\%date:~0,2%%date:~3,2%%date:~6,4%.csv


содержание 1.sql
set pages 0
set heading off
set feedback off
select nomer from table Where data between trunc(sysdate) And trunc(sysdate) + interval '1' day - interval '1' second; 
exit;
28 окт 15, 09:50    [18336144]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка таблицы в файлы  [new]
Vadim Lejnin
Member

Откуда:
Сообщений: 7125
--- sqlfile ---
set pages 0 lines 4096 head off verify off trimspool off
spool &3.&2.&1..csv
select nomer||','||to_char(data,'0999999999999D99') 
from ...
----- eof ---

---- cmd file ---
for %y in ( 2014 2015 ) do (
for %m in ( 01 02 03 04 05 06 07 08 09 10 11 12 ) do (
for %d in ( 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31) do (
  sqlplus -s -l / @ sqlfile %y %m %d
) 
)
)
28 окт 15, 10:30    [18336289]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка таблицы в файлы  [new]
mcureenab
Member

Откуда: Murmansk
Сообщений: 5928
Добавь в скрипт параметр - день. И запусти его для каждого дня.

В скрипте параметры именуются &1, &2 и т.д. Их можно использовать как в запросе, так и в имени spool файла.

Еще в set неплохо указать rowsize и/или trim, иначе в файле будет много ненужных хвостовых пробелов.
28 окт 15, 10:34    [18336305]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка таблицы в файлы  [new]
Vadim Lejnin
Member

Откуда:
Сообщений: 7125
sqlplus в cmd файле лучше так дергать:
echo exit | sqlplus -s -l  / sqlfile ....

можно будет отлаживать sql без проблем и выход из sqlplus будет нормальный
Дополнительно:
sqlplus doc
--- sqlfile
set ...
WHENEVER OSERROR exit 0
WHENEVER SQLERROR exit 0
spool 
select ...
28 окт 15, 10:39    [18336331]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка таблицы в файлы  [new]
adminsamara
Member

Откуда: Самара
Сообщений: 545
Vadim Lejnin,

пишет: Непредвиденное появление: y.
28 окт 15, 11:16    [18336565]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка таблицы в файлы  [new]
Vadim Lejnin
Member

Откуда:
Сообщений: 7125
adminsamara
Vadim Lejnin,

пишет: Непредвиденное появление: y.

В cmd файле нужно использовать %%var вместо %

То есть поменяйте имена переменных
%%y
%%m
%%d
28 окт 15, 11:26    [18336643]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка таблицы в файлы  [new]
adminsamara
Member

Откуда: Самара
Сообщений: 545
Vadim Lejnin,
Тааак, дошли до запуска sql, но почемуто пишет при выполнении sql:
date format not recognized
предшевствующий line из clora


дата в таком формате 15-МАР-15
условие:
...where data between to_date('2015-01-01', 'YY-MM-DD') and to_date('2015-10-27', 'YY-MM-DD')
28 окт 15, 11:36    [18336717]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка таблицы в файлы  [new]
adminsamara
Member

Откуда: Самара
Сообщений: 545
Vadim Lejnin,
без этого, в девелопере выполняестя
||','||to_char(data,'0999999999999D99') 
28 окт 15, 11:38    [18336732]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка таблицы в файлы  [new]
spool sql -> spool.sql
Guest
adminsamara,

Если sqlем владеешь лучше, чем cmd, то и делай все на sql-скриптом без всяких батников.
28 окт 15, 12:04    [18336910]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка таблицы в файлы  [new]
Vadim Lejnin
Member

Откуда:
Сообщений: 7125
DATA или DATE?
какой тип поля?
Есть разница

Может все же прочитаешь хоть что-нибудь?
Хотя бы про форматные маски Format Models

ну и если ты выгружаешь по дням, условие выборки тоже надо устанавливать
по дням используя параметры sqlplus

попробуй сначала как сработает
sqlplus / sqlfile 2015 01 01
28 окт 15, 12:05    [18336921]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка таблицы в файлы  [new]
Vadim Lejnin
Member

Откуда:
Сообщений: 7125
Ну и если созреешь использовать только sqlplus:
Выгрузка результата в несколько файлов / Oracle / Sql.ru
28 окт 15, 12:11    [18336966]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка таблицы в файлы  [new]
adminsamara
Member

Откуда: Самара
Сообщений: 545
Vadim Lejnin
Ну и если созреешь использовать только sqlplus:
Выгрузка результата в несколько файлов / Oracle / Sql.ru


какой селект должен быть внутри sqlfile?
select nomer||','||to_date(data,'YY-MM-DD') from db;
или
select nomer||','||to_date(data,'YY-MM-DD') from db where data between to_date('2015-01-01', 'YY-MM-DD') and to_date('2015-10-27', 'YY-MM-DD')
28 окт 15, 13:23    [18337652]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка таблицы в файлы  [new]
Vadim Lejnin
Member

Откуда:
Сообщений: 7125
adminsamara
Vadim Lejnin
Ну и если созреешь использовать только sqlplus:
Выгрузка результата в несколько файлов / Oracle / Sql.ru


какой селект должен быть внутри sqlfile?
select nomer||','||to_date(data,'YY-MM-DD') from db;

или
select nomer||','||to_date(data,'YY-MM-DD') from db where data between to_date('2015-01-01', 'YY-MM-DD') and to_date('2015-10-27', 'YY-MM-DD')


А какой Вам надо?
Это Вам нужно выгружать данные, и Вы должны знать что хотите получить.

Ответьте СЕБЕ на вопрос:
Что вернет каждый запрос, и вы получите ответ что Вам нужно сделать
28 окт 15, 14:06    [18338063]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка таблицы в файлы  [new]
adminsamara
Member

Откуда: Самара
Сообщений: 545
Vadim Lejnin,

Вадим, может я конечно и не разбираюсь сильно в чем то, но и не совсем "дурак".
Смотри, делаю так:

set pages 0 lines 4096 head off verify off trimspool off
spool &3.&2.&1..csv
select nomer||','||to_date(data,'YY-MM-DD') from db where data between to_date('2015-01-01', 'YY-MM-DD') and to_date('2015-10-27', 'YY-MM-DD')

он создает файлы одинакового размера и содержания с выборкой с 01-01-2015 по 27-10-2015, поэтому и написал тебе, может я в запросе ошибся....
28 окт 15, 14:14    [18338127]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка таблицы в файлы  [new]
Vadim Lejnin
Member

Откуда:
Сообщений: 7125
adminsamara,

Что нужно сделать чтобы содержание было разным?
28 окт 15, 14:19    [18338163]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка таблицы в файлы  [new]
Vadim Lejnin
Member

Откуда:
Сообщений: 7125
Подсказка:
у Вас есть переменные sqlplus
&1
&2
&3
28 окт 15, 14:22    [18338182]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка таблицы в файлы  [new]
adminsamara
Member

Откуда: Самара
Сообщений: 545
Vadim Lejnin
adminsamara,

Что нужно сделать чтобы содержание было разным?


Уменьшить срок в запросе, ты это имеешь в виду?
допустим
с 01012015 по 02012015
с 02012015 по 03012015
и т д.......
но это же костыли....
я за один раз хотел чтобы создались файлики по дням и там были результаты за каждый день, дата соответствовала имени файла а в содержимом просто перечислялись имена
28 окт 15, 14:26    [18338210]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка таблицы в файлы  [new]
adminsamara
Member

Откуда: Самара
Сообщений: 545
adminsamara,

номера
28 окт 15, 14:26    [18338213]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка таблицы в файлы  [new]
Vadim Lejnin
Member

Откуда:
Сообщений: 7125
adminsamara
Есть огромная таблица, 10 столбцов, но нам интересны 2 (NOMER, DATA)
...
01012015.csv
...
создались файлики по дням и там были результаты за каждый день,
дата соответствовала имени файла
а в содержимом просто перечислялись номера


Напишите запрос, который по параметрам SQL*Plus будет выгружать то что Вам нужно...

p.s. Я отвечал как сформировать csv файл с двумя колонками
28 окт 15, 14:35    [18338285]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка таблицы в файлы  [new]
adminsamara
Member

Откуда: Самара
Сообщений: 545
Vadim Lejnin,

таблица: NOMER, DATA
NOMER-цыфры
DATA- дата создания

за сутки: - Но за каждый день так накладно сохранять (мне нужно с 01012015 по 27102015)
select NOMER from table where data between to_date('2015-01-01', 'YY-MM-DD') and to_date('2015-01-02', 'YY-MM-DD');
select NOMER from table where data between to_date('2015-01-02', 'YY-MM-DD') and to_date('2015-01-03', 'YY-MM-DD');
select NOMER from table where data between to_date('2015-01-03', 'YY-MM-DD') and to_date('2015-01-04', 'YY-MM-DD');
.....

Мне нужно 1 день 1 файл(название файла это DATA(01012015.csv 02012015.csv ......), а содержимое каждого это список NOMER за это число(каждые сутки))
28 окт 15, 14:55    [18338488]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка таблицы в файлы  [new]
stax..
Guest
adminsamara
Возможно ли ?!
Есть огромная таблица, 10 столбцов, но нам интересны 2 (NOMER, DATA)
Как через sqlplus выгрузить файлы за каждый день?
в таком виде :
01012015.csv
02012015.csv
03012015.csv
.......
=========================================================================
За текущий день у меня получается так

содержание bat
sqlplus -s *****/*****@127.0.0.1/db @C:\sql\1.sql > C:\nomer\%date:~0,2%%date:~3,2%%date:~6,4%.csv


содержание 1.sql
set pages 0
set heading off
set feedback off
select nomer from table Where data between trunc(sysdate) And trunc(sysdate) + interval '1' day - interval '1' second; 
exit;


1 - 15
2 - 10
3 - 28
set pages 0
set heading off
set feedback off

spo &1_&2_&3..txt

select nomer from table Where data between date '20&1-&2-&3' And date '20&1-&2-&3' + interval '1' day - interval '1' second; 
spo off

exit;



.....
stax
28 окт 15, 15:07    [18338596]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка таблицы в файлы  [new]
adminsamara
Member

Откуда: Самара
Сообщений: 545
stax..,

Через девелопер получается 2 раза ввожу начальную и конечную дату, все ок!
как в cmd запустить, и в файлы запихнуть несоображу
28 окт 15, 15:44    [18338815]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка таблицы в файлы  [new]
adminsamara
Member

Откуда: Самара
Сообщений: 545
adminsamara,

Фух, вроде разобрался!!!!!!! Спасибо вам огромное, скажите как Вас отблагодарить,я отблагодарю!!!! целый день на меня убили!!!!!
28 окт 15, 16:02    [18338911]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить