Load CSV to database (JFROMCSV)

Where allowed to run: All environments (*ALL)
Threadsafe: No
Parameters
Examples
Error messages

Cmd JFROMCSV Load CSV to database > Carica CSV in database

https://www.neroni.it/NERONI2/JFROMCSV.NERONI2.HTML

Il comando permette di caricare un file di flusso in formato CSV dall'IFS ad un file fisico dell'AS400.

Normalmente il file di flusso proviene da un foglio Excel scaricato in formato CSV e giacente in un indirizzario IFS.

Per indirizzario IFS si intende un indirizzario giacente su AS400 ed indirizzabile tramite il comando WRKLNK. Sul lato pc si accede al medesimo indirizzario essenzialmente tramite FTP. In una rete ben fatta e' solitamente possibile vedere un indirizzario IFS anche tramite la gestione risorse del pc.

Il comando e' una semplice interfaccia verso il CPYFRMIMPF veramente delicatuccio per un rapido uso.

Purtroppo, inoltre, il caricamento da Excel tende cronicamente a fallire a causa di dati sporchi che vorrebbero entrare in campi numerici. Non volendo intervenire a monte sulla qualita' dei dati nel foglio CSV da caricare, si consiglia quindi di trasportare egualmente tali dati in un transito dotato di soli campi alfanumerici.

A tale scopo, la presente utility fornisce anche un file di comodo JFROMCSV1 da usare come prototipo per caricare qualunque flusso CSV con un tracciato di 256 campi alfanumerici (il numero massimo di colonne in Excel) con campi lunghi fino a 100 caratteri. Se si trovano dati oltre i 100 caratteri, si puo' usare un secondo prototipo JFROMCSV2 con un tracciato di 163 campi alfanumerici lunghi fino a 200 caratteri. 163 perche', moltiplicato per la lunghezza dei campi 200, raggiunge la insuperabile lunghezza massima di un record nel database. I campi di questi due file sono tutti alfanumerici. Lo scopo e' il caricamento a tutti i costi dei dati su AS400 in un transito da elaborare in seconda battuta con programma di pulizia ad hoc dei dati sporchi. In tal modo si possono preelaborare quei dati che non e' possibile caricare, cosi' come sono, nei campi numerici, loro destinazione finale.

Top

Parameters

Keyword Description Choices Notes
PROTOFILE Prototype file Qualified object name Required, Positional 1
Qualifier 1: Prototype file Name, JFROMCSV1, JFROMCSV2
Qualifier 2: library Name, *LIBL
TOFILE To database file Single values: *PROTOFILE
Other values: Qualified object name
Required, Positional 2
Qualifier 1: To database file Name
Qualifier 2: library Name, QTEMP, *LIBL, *PROTOLIB
FROMCSV From CSV file (no extension) Path name, *PROTOFILE, *TOFILE Required, Positional 3
FROMDIR From directory Path name, *USR, '/home/mydir', *UF, *XX Optional, Positional 4
RPLTOFILE Replaces existing to file *NO, *YES Optional, Positional 5
FROMRCD Copy from record number Decimal number, 2 Optional, Positional 6
REFPGM Reference program for messages Name, *CPP Optional, Positional 7
Top

Prototype file (PROTOFILE) - name > File prototipo - nome

Nome del file dati contenente il tracciato secondo il quale deve essere ricaricato il file CSV proveniente da Excel.

Il valore e' obbligatorio.

Valori permessi:

nome-file-dati
Nome del file dati di cui usare il tracciato.

Valori speciali:

JFROMCSV1
Nome del file dati di comodo il cui tracciato, fornito dalla presente utility, contiene 256 campi alfanumerici di 100 caratteri.
JFROMCSV2
Nome del file dati di comodo il cui tracciato, fornito dalla presente utility, contiene 163 campi alfanumerici di 200 caratteri.

Prototype file (PROTOFILE) - library > File prototipo - libreria

Nome della libreria in cui risiede il file.

Valori permessi:

nome-libreria
Il file dati viene cercato nella libreria richiesta.

Valori speciali:

*LIBL
Il file dati viene cercato in lista librerie.
Top

To file (TOFILE) - name > File destinazione - nome

Nome del file AS400 destinato a contenere i dati provenienti dal file CSV a sua volta scaricato da Excel.

Se il file ricevente preesiste ed e' diverso dal prototipo, viene prima cancellato e poi ricreato.

Il valore e' obbligatorio.

Valori permessi:

nome-file-dati
Il valore e' obbligatorio.

Valori speciali:

*PROTOFILE
Il file ricevente coincide con il file prototipo.

To file (TOFILE) - library > File destinazione - libreria

Nome della libreria in cui risiede il file ricevente.

Valori permessi:

nome-libreria
Il file dati viene cercato nella libreria richiesta.

Valori speciali:

QTEMP
Il file dati viene cercato in libreria temporanea.
Top

From CSV file (no extension) (FROMCSV) > File csv provenienza (no estensione)

Nome del file di provenienza giacente nell'IFS in formato CSV, scaricato da Excel e da caricare nel file AS400 di destinazione.

Il nome qui riportato deve essere senza estensione poiche' l'estensione obbligatoria del file diprovenienza e' sempre ".CSV".

Il valore e' obbligatorio.

Valori permessi:

nome-file-IFS
Il nome del file IFS.

Valori speciali:

*PROTOFILE
Il nome del file di provenienza coincide col nome del file prototipo.
*TOFILE
Il nome del file di provenienza coincide col nome del file ricevente.
Top

From directory (FROMDIR) > Indirizzario provenienza

Nome dell'indirizzario IFS in cui giace il file di provenienza da caricare.

Tutto quanto e' indirizzabile nel parametro OBJ del comando WRKLNK puo' essere indirizzato anche in questo parametro.

Si raccomanda tuttavia che sia un sottoindirizzario di "/home", come consigliato dalla letteratura per i dati utente.

Valori permessi:

indirizzario-IFS
Nome dell'indirizzario in cui cercare il file di provenienza.

Valori speciali:

*USR
Il nome dell'indirizzario IFS viene composto riunendo "/home/" con il nome dell'utente corrente.
/home/mydir
La presente entrata costituisce un semplice promemoria sulla forma del parametro.
*UF
Il nome dell'indirizzario IFS viene composto riunendo "/webufhtml/" con il nome dell'utente corrente.
*XX
Il nome dell'indirizzario IFS viene composto riunendo "/webufhtml/", il nome dell'utente corrente e "/xx".
Top

Replaces existing to file (RPLTOFILE) > Sostituisce preesistente file destinazione

Valori permessi:

*NO
Se il file ricevente esiste gia', non viene sostituito e il caricamento viene rifiutato.
*YES
Se il file ricevente esiste gia' ed e' diverso dal prototipo, viene sostituito. Se il file ricevente coincide col prototipo, i dati del prototipo vengono sostituiti.
Top

Copy from record number (FROMRCD) > Copia dal numero record

Copia i record dal file di provenienza a partire dal numero progressivo di record qui richiesto.

Normalmente il primo record di un file CSV contiene le intestazioni nella forma di testo che non trovano posto nel tracciato del file AS400 corrispondente. Il parametro corrente permette di saltare quei primi record CSV che darebbero errore sul file ricevente.

Valori permessi:

numero-intero
La copia dal file CSV al file AS400 avviene a partire dal numero di record qui richiesto.

Valori speciali:

2
La copia dal file CSV al file AS400 avviene a partire dal secondo record.
Top

Reference program for messages (REFPGM) > Programma riferimento messaggi

Nei tool complessi a piu' livelli, il presente parametro compare in tutti i comandi di interfaccia dal primo all'ultimo dei chiamati in cascata e permette di condividere il programma di riferimento al cui chiamante verranno spediti i messaggi emessi da tutti i tool coinvolti.

Il programma di riferimento e' il command processing program del tool di cappello che in cascata chiama tutti gli altri. Il cappello, dopo aver riempito con il proprio nome il parametro "programma di riferimento", lo passa anche ai tool chiamati che lo utilizzano per spedire i propri messaggi.

Valori permessi:

nome-di-un-programma-in-lista-di-chiamata
Il nome di un programma presente nella lista di chiamata del lavoro corrente.

I messaggi emessi dal programma corrente saranno indirizzati al chiamante del programma di riferimento, preferibilmete un video comandi.

Utile quando il comando corrente e' chiamato da un altro comando con il quale condivide il presente parametro.

Valori speciali:

*CPP
Il valore *CPP viene sostituito con il nome del programma corrente.

I comandi da questo chiamati (e che prevedono lo stesso parametro) faranno riferimento al programma corrente e i messaggi emessi da tali programmi saranno indirizzati al chiamante del programma corrente.

Utile quando il comando corrente e' il primo chiamante da un video comandi e a sua volta chiama altri tool condividendo il presente parametro.

Top

Esempi d'uso del comando JFROMCSV Load CSV to database

Esempio zero: Crea ambiente di prova

Per costruire l'esempio avendo un file CSV con caratteristiche conosciute, si genera preliminarmente il file CSV in IFS facendo uso del comando JTOCSV e dell'esempio di scarico spiegato nell'help relativo, qui ricapitolato.

Genera un file da scaricare:

> DSPFD FILE(NERONI2/JRSNMSG) TYPE(*MBRLIST)
        OUTPUT(*OUTFILE) OUTFILE(QTEMP/TEST)
  Il file di emissione TEST e' stato creato nella libreria
    QTEMP.
  Il membro TEST e' stato aggiunto al file di emissione TEST
    nella libreria QTEMP.
  6 record sono stati aggiunti al membro TEST nel file TEST
    in QTEMP.

Scarica il file CSV:

> JTOCSV FROMFILE(QTEMP/TEST) RMVBLANK(*TRAILING)
  Copiato il file di database datore QTEMP/TEST nel file IFS
    ricevente /home/NERONI/QTEMP-TEST.csv
> /**/DSPF STMF('/home/NERONI/QTEMP-TEST.csv')

Esempio 1: Carica da IFS un file CSV in un file di database usando come prototipo di definizione il file di database che genero' lo scarico.

Carica il file ottenuto in IFS tramite il soprastante "Esempio zero".

> JFROMCSV PROTOFILE(QTEMP/TEST) TOFILE(TESTRELOAD)
           FROMCSV('QTEMP-TEST') FROMRCD(3)
  Copiato il file datore IFS /home/NERONI/QTEMP-TEST.csv
    nel file di database ricevente QTEMP/TESTRELOAD,
    prototipo QTEMP/TEST
> /**/RUNQRY QRYFILE((QTEMP/TESTRELOAD)) RCDSLT(*YES)

Per vedere il risultato si puo' duplicare ed eseguire il comando prototipo /**/ visibile nel log.

Esempio 2: Carica da IFS un file CSV in un file di database usando come prototipo di definizione un file generico di servizio.

Carica il file ottenuto in IFS tramite il soprastante "Esempio zero".

> JFROMCSV PROTOFILE(JFROMCSV1) TOFILE(TESTRELOAD)
           FROMCSV('QTEMP-TEST') RPLTOFILE(*YES) FROMRCD(3)
  Copiato il file datore IFS /home/NERONI/QTEMP-TEST.csv
    nel file di database ricevente QTEMP/TESTRELOAD,
    prototipo NERONI2/JFROMCSV1
> /**/RUNQRY QRYFILE((QTEMP/TESTRELOAD)) RCDSLT(*YES)

Per vedere il risultato si puo' duplicare ed eseguire il comando prototipo /**/ visibile nel log.

Top

Messaggi di completamento

JFC0191
Copiato il file datore IFS &3 nel file di database ricevente &1/&2
JFC0192
Copiato il file datore IFS &5 nel file di database ricevente &1/&2, prototipo &3/&4

Messaggi diagnostici seguiti da rilascio

JFC0101
Il file &1/&2 prototipo di database non esiste
JFC0102
L'indirizzario datore IFS &1 non esiste
JFC0103
Il file IFS datore &1 non esiste.
JFC0104
La libreria ricevente &1 non esiste
JFC0105
Cancellazione preliminare vietata se ricevente uguale a prototipo.
JFC0106
File ricevente &1/&2 esiste gia'
Top