Muszę spoolować csv z tabeli w Oracle, używając sqlplus. Poniżej znajduje się Wymagany format:Formatowanie nagłówka podczas buforowania pliku csv w sqlplus
"HOST_SITE_TX_ID","SITE_ID","SITETX_TX_ID","SITETX_HELP_ID"
"664436565","16","2195301","0"
"664700792","52","1099970","0"
następuje odpowiedni fragment skryptu powłoki pisałem:
sqlplus -s $sql_user/[email protected]$sid <<eof>> /dev/null
set feedback off
set term off
set linesize 1500
set pagesize 11000
--set colsep ,
--set colsep '","'
set trimspool on
set underline off
set heading on
--set headsep $
set newpage none
spool "$folder$filename$ext"
select '"'||PCL_CARRIER_NAME||'","'||SITETX_EQUIP_ID||'","'||SITETX_SITE_STAT||'","'||SITETX_CREATE_DATE||'","'||ADVTX_VEH_WT||'"'
from cvo_admin.MISSING_HOST_SITE_TX_IDS;
spool off
(Użyłem kilka komentowane oświadczenia w, oznaczać to, co próbowałem ale mogłam „t dostać się do pracy)
wyjście otrzymuję to:
'"'||PCL_CARRIER_NAME||'","'||SITETX_EQUIP_ID||'","'||SITETX_SITE_STAT||'","'||SITETX_CREATE_DATE||'","'||ADVTX_VEH_WT||'"'
"TRANSPORT INC","113","00000000","25-JAN-13 10.17.51 AM",""
"TRANSPORT INC","1905","00000000","25-JAN-13 05.06.44 PM","0"
który pokazuje że nagłówek jest pomieszany - to jest dosłownie drukowanie całego łańcucha, który powinien zostać zinterpretowany jako instrukcja SQL, tak jak w przypadku wyświetlanych danych.
Opcje Zastanawiam:
1) Korzystanie colsep
set colsep '","'
spool
select * from TABLE
spool off
Wprowadza inne problemy, jak dane mające początkowe i końcowe spacje, pierwsze i ostatnie wartości w plikach nie są ujęte w cudzysłowy
HOST_SITE_TX_ID"," SITE_ID"
" 12345"," 16"
" 12345"," 21
Doszedłem do wniosku, że ta metoda daje mi więcej zgagi niż ta, którą opisałem wcześniej.
2) Pobranie pliku i użycie wyrażenia regularnego w celu zmodyfikowania nagłówka.
3) Pozostawienie nagłówek całkowicie i ręcznie dodając ciąg nagłówka na początku pliku, używając skryptu
Wariant 2 jest bardziej wykonalne, ale nadal był zainteresowany pytaniem, czy nie może być lepiej sposób jakoś sformatować nagłówek, więc przychodzi w zwykłym formacie csv, (rozdzielany przecinkami, z podwójnym cudzysłowem).
Szukam mniej twardego kodowania, jak to możliwe - tabela, którą eksportuję, ma około 40 kolumn i obecnie używam skryptu dla około 4 milionów rekordów - łamiąc je w partii około 10K każdy. Byłbym wdzięczny za wszelkie sugestie, nawet całkowicie różne od mojego podejścia - jestem programistą w nauce.
Mam trudności z zobaczeniem, jak to jest odpowiedź na pytanie tutaj zadane. –