Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Выгрузка из Oracle в CSV / 9 сообщений из 9, страница 1 из 1
09.07.2018, 10:25
    #39671449
Rulezzz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка из Oracle в CSV
Доброго день!

Пытаюсь автоматизировать выгрузку небольшого отчета через sqlplus в csv, но возникла сложность с расстановками || '";"' ||
Никак не могу заставить данные выводиться таблицей. Прошу вашей помощи.

Код: plsql
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.
27.
28.
29.
30.
	SET TRIMSPOOL ON;
	SET ECHO OFF;
	SET TRIMOUT ON;
	SET LINESIZE 50;
	SET PAGESIZE 0; 
	SET FEEDBACK OFF;
	SET colsep '|'
	SET TIMING OFF;
	SET HEADING OFF;
	SET VERIFY OFF;
	SET TERMOUT OFF;
	SPOOL d:/Temp/1/export_file.csv;
	whenever oserror exit 1
	whenever sqlerror exit 2

SELECT *
FROM
     (SELECT to_char(date_of,'yyyy.mm.dd') "Дата", ID_DIVISION, DECODE (amount,'0',operation,amount) as new_amount 
      FROM t_data where 
      DATE_OF >= TO_DATE('01.07.2018 00:00:00','dd.mm.yyyy hh24:mi:ss') 
      AND 
      DATE_OF <= TO_DATE('29.07.2018 23:59:59','dd.mm.yyyy hh24:mi:ss')
     ) PIVOT (count(new_amount) AS "Кол-во",SUM(trunc(new_amount)) AS "Сумма"
              FOR ID_DIVISION IN (2600001000, 2700001000, 100001000
                )
               )
ORDER BY 1;

SPOOL OFF;
exit 0;
...
Рейтинг: 0 / 0
09.07.2018, 10:30
    #39671456
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка из Oracle в CSV
авторSET colsep '|'

Если это разделитель колонок, то он должен быть ";" или "," для comma separated values, и, конечно, если в данных такое попадается, надо эти символы заменять или, по крайней мере, в кавычки заключать, для строк.
...
Рейтинг: 0 / 0
09.07.2018, 10:57
    #39671487
Rulezzz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка из Oracle в CSV
Хорошо, поменял на - SET colsep ';'

если пытаюсь сделать так:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT *
FROM
     (SELECT to_char(date_of,'yyyy.mm.dd') "Дата"||';'|| ID_DIVISION||';'|| DECODE (amount,'0',operation,amount) as new_amount 
      FROM t_data where 
      DATE_OF >= TO_DATE('01.07.2018 00:00:00','dd.mm.yyyy hh24:mi:ss') 
      AND 
      DATE_OF <= TO_DATE('29.07.2018 23:59:59','dd.mm.yyyy hh24:mi:ss')
     ) PIVOT (count(new_amount) AS "Кол-во",SUM(trunc(new_amount)) AS "Сумма"
              FOR ID_DIVISION IN (2600001000, 2700001000, 100001000
             ))
ORDER BY 1;



то выводит ошибку
ORA-00904: "ID_DIVISION": недопустимый
идентификатор
С обычным select-ом у меня все выводится нормально, а вот вместе с pivot, непонятно как данные выводить :(
...
Рейтинг: 0 / 0
09.07.2018, 11:29
    #39671504
MaximaXXL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка из Oracle в CSV
Rulezzz...
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT *
FROM
     (SELECT to_char(date_of,'yyyy.mm.dd') "Дата"||';'|| ID_DIVISION||';'|| DECODE (amount,'0',operation,amount) as new_amount 
      FROM t_data where 
      DATE_OF >= TO_DATE('01.07.2018 00:00:00','dd.mm.yyyy hh24:mi:ss') 
      AND 
      DATE_OF <= TO_DATE('29.07.2018 23:59:59','dd.mm.yyyy hh24:mi:ss')
     ) PIVOT (count(new_amount) AS "Кол-во",SUM(trunc(new_amount)) AS "Сумма"
              FOR ID_DIVISION IN (2600001000, 2700001000, 100001000
             ))
ORDER BY 1;



Что это за поле то такое странное ...
Да и SUM(trunc(new_amount)) по нему точно не сработает
...
Рейтинг: 0 / 0
09.07.2018, 11:44
    #39671516
Rulezzz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка из Oracle в CSV
Ну то, что я делаю неправильно, я и сам понял :)
Напишите лучше как правильно?
...
Рейтинг: 0 / 0
09.07.2018, 11:52
    #39671521
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка из Oracle в CSV
Rulezzz,

markup csv
...
Рейтинг: 0 / 0
09.07.2018, 11:54
    #39671524
MaximaXXL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка из Oracle в CSV
Rulezzz,

Напиши через with t_data - тогда быстро напишут правильный ответ.

Ну или жди коме не лень будет собрать эту табличку за тебя - чтоб написать правильный ответ.

А то пака ORA-00942: table or view does not exist
...
Рейтинг: 0 / 0
09.07.2018, 13:23
    #39671584
123йй
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка из Oracle в CSV
RulezzzНу то, что я делаю неправильно, я и сам понял :)
Напишите лучше как правильно?
убрать слово автор"Дата"
...
Рейтинг: 0 / 0
09.07.2018, 14:48
    #39671649
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка из Oracle в CSV
проще sqlplus обновить до 12.2 и юзать
-2- markup csv

ну или использовать SQLcl
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Выгрузка из Oracle в CSV / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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