Как вставить имена столбцов базы данных в файл CSV в сценарии оболочки - PullRequest
0 голосов
/ 09 января 2020

Я выполняю приведенный ниже скрипт для базы данных oracle.

sqlplus -s $DBUSER/$DBPASS@$DBHOST:$DBPORT/$DBSID << FIN_SQL > $pi_cancellation.csv
SET HEADING ON
SET FEEDBACK OFF
SET LINESIZE 32767
SET PAGESIZE 0
SET SERVEROUTPUT OFF
SELECT  ROOT_PROC_INS_ID || ',' || PROCESS_INSTANCE || ',' || PROCESS_TEMPLATE || ',' || START_TIME || ',' || STATUS || ',' || ATTRIBUTE2 || ',' || ATTRIBUTE14
FROM BPMUSER.EC_PE_STATUS
WHERE START_TIME<(SYSDATE - 15) AND (STATUS='pi_halted' OR STATUS='pi_failed')
ORDER BY START_TIME DESC;
FIN_SQL

Я хочу вставить имена столбцов в файл CSV, но не так, как указано в запросе sql выше, а как показано ниже. Например, Order_Ref должен быть вставлен в CSV-файл для Attribute2

ROOT_PROCESS_INSTANCE,PROCESS_INSTANCE,PROCESS_NAME,START_DATE,STATUS,ORDER_REF,LINE_NUMBER
pvm:0a12dd82,pvm:0a12dd84,TechnicalErrorProcess,21-JUN-19 07.01.58.560000 AM,pi_halted,38930,1
pvm:0a12dd77,pvm:0a12dd79,TechnicalErrorProcess,20-JUN-19 12.36.27.384000 PM,pi_halted,1572846,1
pvm:0a12dd6t,pvm:0a12dd6v,TechnicalErrorProcess,20-JUN-19 12.05.22.145000 PM,pi_halted,38929,1
pvm:0a12dd4h,pvm:0a12dd4l,TechnicalErrorProcess,17-JUN-19 07.11.43.522000 AM,pi_halted,9973686,1

1 Ответ

0 голосов
/ 09 января 2020

Выведите строку заголовка перед запуском SQL* Plus и выключите его заголовок.

echo 'ROOT_PROCESS_INSTANCE,PROCESS_INSTANCE,PROCESS_NAME,START_DATE,STATUS,ORDER_REF,LINE_NUMBER' > $pi_cancellation.csv
sqlplus -s $DBUSER/$DBPASS@$DBHOST:$DBPORT/$DBSID << FIN_SQL >> $pi_cancellation.csv
SET HEADING OFF
SET FEEDBACK OFF
SET LINESIZE 32767
SET PAGESIZE 0
SET SERVEROUTPUT OFF
SELECT  ROOT_PROC_INS_ID || ',' || PROCESS_INSTANCE || ',' || PROCESS_TEMPLATE || ',' || START_TIME || ',' || STATUS || ',' || ATTRIBUTE2 || ',' || ATTRIBUTE14
FROM BPMUSER.EC_PE_STATUS
WHERE START_TIME<(SYSDATE - 15) AND (STATUS='pi_halted' OR STATUS='pi_failed')
ORDER BY START_TIME DESC;
FIN_SQL
...