Создать bat-файл для запуска запроса - PullRequest
0 голосов
/ 14 декабря 2010

Мне нужно создать bat-файл, который включает запрос для запуска пакета. Я использую plsql для разработки пакета. его имя пользователя, пароль и база данных - user, pswd, db1 соответственно. Запрос для запуска пакета:

SELECT        
   COLUMN1 AS "LAST NAME",
   COLUMN2 AS "FIRST NAME",
   COLUMN3 AS "LOCATION"       
FROM TABLE(PKG.GET_SUM('09-NOV-2010','12-NOV-2010'))

Может кто-нибудь помочь мне, какой код я пишу, чтобы создать файл bat

Заранее спасибо

Это мой код

connect usr/pswd@db1 
SET NEWPAGE 0 
SET SPACE 0 
SET LINESIZE 80 
SET PAGESIZE 100 
COLUMN COLUMN1 HEADING 'LAST NAME' 
COLUMN COLUMN2 HEADING 'FIRST NAME' 
COLUMN COLUMN3 HEADING 'LOCATION' 
spool c:\temp\get_sums.csv 
SELECT COLUMN1 
    ,COLUMN2 
    ,COLUMN3 
    ,COLUMN4 
    ,COLUMN5 
    , COLUMN6 
    ,COLUMN7,
    COLUMN8 
    ,COLUMN9 
FROM TABLE(ACTY_SUMM('09-NOV-2010','12-NOV-2010')) 
/ 
spool off 
exit;

Я изменил размер строки и размер страницы. Но не удалось получить желаемый формат. У меня 12 столбцов. Мне нужно в формате отчета.

Привет! Я пытался изменить размер строки, но все равно не получил желаемый формат. Я хочу отчет в следующем формате

FirstNAME LASTNAME LOCATION  A  B  C  D  E  F  G  H  I
NAME1     LNAME1    LOC1     A1 B1 C1 D1 E1 F1 G1 H1 I1
NAME2     LNAME2    LOC1     A2 B2 C2 D2 E2 F2 G2 H2 I2
                    LOCTOT   
NAME3     LNAME3    LOC2     A3 B3 C3 D3 E3 F3 G3 H3 I3
                    LOCTOT

Мне нужны все столбцы в одной строке и соответствующие им значения каждого человека в каждом столбце, и после каждого местоположения будет общее местоположение, а в конце будет общее количество гранта. Я пробовал с размером строки, размером страницы и все. до сих пор нет результата. Может ли кто-нибудь помочь мне получить отчет в этом формате

Привет

На данный момент клиент в порядке с форматом CSV. Но проблема в том, что я не понимаю. Это мой код в сценарии sql.

connect usr/pwd@db1
SET NEWPAGE 0
SET LINESIZE 100
SET PAGESIZE 0
spool c:\temp\q1.csv

COLUMN COLUMN1 HEADING 'LAST NAME'
COLUMN COLUMN2 HEADING 'FIRST NAME'
COLUMN COLUMN3 HEADING 'LOCATION'
COLUMN COLUMN4 HEADING 'A'
COLUMN COLUMN5 HEADING 'B'
COLUMN COLUMN6 HEADING 'C'
COLUMN COLUMN7 HEADING 'D'
COLUMN COLUMN8 HEADING 'E'
COLUMN COLUMN9 HEADING 'F'
COLUMN COLUMN10 HEADING 'G'
COLUMN COLUMN11 HEADING 'H'
COLUMN COLUMN12 HEADING 'I'
SELECT 
    '"'||COLUMN1
    ||'","'|| COLUMN2 
    ||'","'|| COLUMN3 
    ||'","'|| COLUMN4 
    ||'","'|| COLUMN5 
    ||'","'|| COLUMN6 
    ||'","'|| COLUMN7
    ||'","'|| COLUMN8 
    ||'","'|| COLUMN9 
    ||'","'|| COLUMN10
    ||'","'|| COLUMN11
   ||'","'|| COLUMN12||'"'
FROM
TABLE(ACTY_SUM('09-NOV-2010','12-NOV-2010')) 
/ 

spool off
exit;

Можете ли вы предложить по этому вопросу

1 Ответ

3 голосов
/ 14 декабря 2010

Сначала создайте скрипт для запуска запроса. Вы захотите сохранить вывод в файл, отсюда и команда SPOOL.

connect usr/pswd@db1
spool c:\temp`get_sums.lst

SELECT 

   COLUMN1 AS "LAST NAME",
   COLUMN2 AS "FIRST NAME",
   COLUMN3 AS "LOCATION"

FROM TABLE(PKG.GET_SUM('09-NOV-2010','12-NOV-2010'))
/

spool off
exit;

сохранить это в файл с именем get_sums.sql. Затем вам нужен командный файл get_sums.bat, например:

sqlplus /nolog @C:\get_sums.sql

Существуют различные команды SQL * Plus, которые можно включить в файл .sql для форматирования вывода. Узнайте больше .


Очевидно, что ссылка на документацию по форматированию недостаточна.

Нет смысла устанавливать LINESiZE на 80, это значение по умолчанию. Если вы выбираете девять столбцов и хотите, чтобы все девять значений отображались в одной строке, вам нужно установить LINESIZE так, чтобы он был достаточно длинным, чтобы вместить все столбцы. Это означает, что вам нужно установить LINESIZE на сумму ширины всех столбцов плюс восемь (количество промежуточных пробелов между столбцами ninbe).

Хотя я вижу, вы пытались

SET SPACE 0

Это приводит к тому, что все выбранные столбцы объединяются в одну длинную строку, что является весьма необычным способом составления отчета. Но если это действительно то, что вам нужно, тогда игнорируйте промежуточные пробелы при расчете правильного значения для LINESIZE.


Отформатировав опубликованный вами код, я вижу, что вы выводите на .csv. Почему вы не сказали, что хотите экспортировать значения, разделенные запятыми?

Есть несколько способов сделать это. Самое простое - объединить проекцию запроса с запятыми:

SELECT 
    '"'||COLUMN1 
    ||'","'|| COLUMN2 
    ||'","'|| COLUMN3 
    ||'","'|| COLUMN4 
    ||'","'|| COLUMN5 
    ||'","'|| COLUMN6 
    ||'","'|| COLUMN7
    ||'","'|| COLUMN8 
    ||'","'|| COLUMN9 ||'"'
FROM TABLE(ACTY_SUMM('09-NOV-2010','12-NOV-2010')) 
/ 

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


«Мне не нужны значения, разделенные комой. отредактировал мой пост. Пожалуйста, предложите "

Вот некоторые тестовые данные:

SQL> select * from t23
  2  /

♀FIRSTNAME            LASTNAME              LOCATION    A   B   C   D   E   F
--------------------  --------------------  ----------  --  --  --  --  --  --
G   H   I
--  --  --
NAME1                 LNAME1                LOC1        A1  B1  C1  D1  E1  F1
G1  H1  I1

NAME2                 LNAME2                LOC1        A2  B2  C2  D2  E2  F2
G2  H2  I2

NAME3                 LNAME3                LOC2        A3  B3  C3  D3  E3  F3
G3  H3  I3


SQL> 

Я могу создать базовый макет, который вы хотите, используя команды форматирования SQL * Plus

SQL> set linesize 100
SQL> break on location
SQL> compute count of location on location
SQL> compute count of location on report
SQL> r
  1* select * from t23
♀FIRSTNAME            LASTNAME              LOCATION    A   B   C   D   E   F   G   H   I
--------------------  --------------------  ----------  --  --  --  --  --  --  --  --  --
NAME1                 LNAME1                LOC1        A1  B1  C1  D1  E1  F1  G1  H1  I1
NAME2                 LNAME2                            A2  B2  C2  D2  E2  F2  G2  H2  I2
                                            ----------
                                                     2
NAME3                 LNAME3                LOC2        A3  B3  C3  D3  E3  F3  G3  H3  I3
                                            ----------
                                                     1

SQL> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...