Esportare un file in CSV sull'IFS

Rivista il

Accedi per salvare
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.

Fonti

← Torna al blog

Commenti

  • marcotrezzi.m… (modificato)

    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

Devi avere un account per commentare. Accedi · Registrati