CPYTOIMPF FROMFILE(PRODLIB/ARTICOLI) +
TOSTMF('/home/export/articoli.csv') +
MBROPT(*REPLACE) +
STMFCCSID(1208) +
RCDDLM(*CRLF) +
DTAFMT(*DLM) +
FLDDLM(';') +
DECPNT(*COMMA)
Per includere i nomi delle colonne come prima riga si aggiunge ADDCOLNAM(*SQL).
Esempio: esportare una selezione, non tutto il file
CPYTOIMPF copia un file intero. Quando servono solo alcune colonne, o solo le righe di una
zona, la strada non è filtrare dopo in Excel: è dare al comando un oggetto che contiene già
quello che serve.
Una vista in QTEMP costa niente e sparisce da sola a fine job:
CREATE VIEW QTEMP/EXPCLI AS
SELECT CODCLI, RAGSOC, FATTURATO
FROM PRODLIB/CLIENTI
WHERE ZONA = 'NORD'
AND FATTURATO > 0
CPYTOIMPF FROMFILE(QTEMP/EXPCLI) +
TOSTMF('/home/export/clienti-nord.csv') +
MBROPT(*REPLACE) +
STMFCCSID(1208) +
RCDDLM(*CRLF) +
DTAFMT(*DLM) +
FLDDLM(';') +
DECPNT(*COMMA) +
ADDCOLNAM(*SQL)
Con ADDCOLNAM(*SQL) l'intestazione arriva dai nomi delle colonne della vista, quindi
rinominandole nel SELECT (AS "Codice cliente") si decide cosa legge chi apre il file,
senza toccare il file di origine.
Nota
senza STMFCCSID un file nuovo prende il CCSID del file di database d'origine,
cioè una codifica EBCDIC, e chi lo apre su Windows vede caratteri sbagliati. 1208 scrive in
UTF-8. Se il file si apre in Excel con un doppio clic e le lettere accentate escono
sbagliate, STMFCCSID(*PCASCII) usa la codifica di Windows, che IBM indica proprio per le
applicazioni Windows. Il CCSID si sceglie quando il file nasce: su un file che esiste già
il valore deve essere lo stesso, altrimenti il comando si ferma con un errore. Per cambiarlo
si cancella prima il file.
Suggerimento
dove Excel usa la virgola per i decimali, come con le impostazioni
italiane, i campi si separano col punto e virgola e i decimali si scrivono con la virgola,
DECPNT(*COMMA). Il valore di serie è il punto, e un Excel italiano rischia di leggere
12.50 come testo invece che come numero.
Le stringhe restano fra virgolette doppie, che è il valore di serie di STRDLM: così un punto
e virgola dentro una ragione sociale non sposta le colonne, e una virgoletta nel dato viene
raddoppiata.
Rilasci. ADDCOLNAM, che scrive i nomi delle colonne come prima riga (*SQL quelli SQL,
*SYS quelli di sistema), è nella documentazione IBM di 7.5. Se su un rilascio più vecchio il
comando lo rifiuta come parola chiave non valida, l'intestazione va aggiunta a parte.
Hello to all, I want to share also another way that I used CPYTOIMPF for convert into CSV and put on IFS from Db2 file. After having the file ready, use the following command: CPYTOIMPF FROMFILE(LIB/PFOBJ) TOSTMF('/your_folder/file.csv') FROMCCSID(37) STMFCCSID(*PCASCII) RCDDLM(*CRLF) Done that, you can download the file from ACS using "Actions > Integrated File System" ad use it. Eventually, you can put those parameters: MBROPT(*REPLACE) ADDCOLNAM(*SYS) The parameter ADDCOLNAM can be found from release V7R2. (https://www.ibm.com/docs/en/i/7.2.0?topic=ssw_ibm_i_72/cl/cpytoimpf.html) Marco