Importazione in formato JASCII

FORMATO DEL FILE

JOLLY esegue importazioni di dati all'interno del database leggendo dati da file scritti nel seguente formato.

E' possibile importare fino a 24 tabelle nello stesso file.

VERSION

Numero di versione del formato di esportazione del file dati; valore exadecimale a 4 cifre: le prime due indicano la versione, le ultime 2 la release; esempio: 0258 = 0x0102 = ver 1, rel 2.

Le versioni dei formati di importazione jascii sono le seguenti:

versione data descrizione
1.01 2003 versione iniziale della procedura
1.02 15-02-2005 aggiunta della possibilità di esportazione di più campi a lunghezza variabile (e non solamente di uno); anziché essere registrati alla fine della prima (e unica) riga di dati, tali campi vengono scritti in righe supplementari (una riga per ogni campo)

UNIQUE_ ID

La clausola UNIQUE_ID è riferita al file exportato nel suo insieme e consente di identificare in modo univoco i files importati.
Non ha alcuna relazione con l'esistenza o meno dei singoli records importati sul database di destinazione, ma serve esclusivamente ad evitare di importare più volte, per errore, lo stesso file.
Il programma infatti si rifiuta di importare più di una volta files con lo stesso identificatore.
La clausola è facoltativa.

LOGFILE=[nomefile]

Se la clausola è presente, su NOMEFILE vengono registrate le attività svolte dalla procedura di importazione. Se NOMEFILE non è indicato, sarà utilizzato lo stesso nome del file dati con estensione .TXT. Per attivare/disattivare le informazioni sulle singole tables, vedi la clausola LOGFILE=YES/NO.
Nomefile può contenere variabili di ambiente del sistema operativo (esempio: %ProgramFilesDir%, oppure %TEMP%).

ASK_READ_LOGFILE=YES|NO

L'inserimento di questa clausola facoltativa abilita/disabilita la proposta di lettura del file log (ovviamente solo se questo è presente) al termine dell'esportazione. Il valore predefinito è NO.
Spesso, soprattutto se l'utente non è particolarmente brillante, la proposta di lettura del file LOG (di cui non si capisce il significato né l'utilità) può indurre confusione.

TABLE_NAME

Formato:TABLE_NAME=nome fisico della tabella

La clausola è facoltativa. Serve per quei (rari) casi in cui si desidera importare sulla stessa tabella di destinazione dati provenienti da due tabelle diverse. In questo caso è necessario usare due nomi diversi nella clausola TABLE_START, e il nome reale della tabella di destinazione in TABLE_NAME.

Esempio:

TABLE_START=telefoni_telefoni

TABLE_NAME=telefoni

…..

TABLE_END

TABLE_START=telefoni_fax

TABLE_NAME=telefoni

…..

TABLE_END

OPZIONI TABELLA

Le seguenti opzioni possono essere indicate per ogni tabella.

se la condizione indicata è vera viene eseguita una delle seguenti operazioni:

L'operazione viene eseguita solo se la condizione (opzionale) risulta verificata; se la condizione non è verificata l'azione eseguita è l'opposto di quella proposta: SKIP > UPDATE, UPDATE > SKIP, DELETE > SKIP; la condizione può contenere:

La condizione deve essere un predicato booleano in sintassi SQL. Ad esempio:

Possono essere opzionalmente indicate espressioni SQL che sono eseguite in concomitanza con uno dei possibili eventi (skip/ update/ delete). Tali espressioni SQL vengono eseguite prima dell'evento e solo se l'evento si verifica.

Su tali espressioni SQL vengono eseguite le stesse sostituzioni previste per la condizione.

L'opzione si ripercuote a cascata sulle tabella collegate attraverso un legame di FOREIGN KEY (le righe figlie subiranno lo stesso trattamento della riga padre) a meno di specifiche ulteriori condizioni espresse sulle righe figlie.

Il valore default è:

FORMATO CAMPO

Per ogni campo esportato si deve inserire una riga che descrive nome, tipo e caratteristiche del campo.
La sintassi è la seguente:

[!]name tipo [col_start {size|*}] [SQL=§espressione SQL§] [PK] [FK:table] [autoincrement] [REM] [commenti]

! indica che il campo deve essere riempito a spazî, e non trimmato;
per default il campo viene trimmato
name il nome del campo SQL
tipo il tipo di campo: può essere uno dei tipi già definiti per l'esportazione
col_start colonna di inizio dei dati; il campo non è obbligatorio, ma se non presente è obbligatorio che sia presente l'opzione SQL
size | * numero di colonne occupate dal campo nel file ascii;
il campo non è obbligatorio, ma se non presente deve essere presente la clausola SQL.
Se tipo = S, in luogo delle dimensioni del campo è possibile specificare un asterisco, ad indicare che il campo ha dimensione variabile. Per ogni campo marcato dall'asterisco il programma legge una riga di dati supplementare rispetto a quella base, e l'associazione tra campo e riga viene realizzata in funzione dell'ordine di dichiarazione dei campi.
SQL al campo sarà assegnato il risultato del dell'istruzione SQL specificata;
è possibile referenziare il nome di altri campi della tabella purché indicati tra $$ e dichiarati prima del campo in trattamento;
esempio: SQL=§select valore FROM pconti WHERE str_codice = $str_conto$§
PK indica che il campo fa parte della Primary Key per la table;
una table dovrebbe sempre avere una PK quantomeno per la verifica dell'esistenza o meno del record che si sta caricando; qualora una table sia priva di PK non sarà eseguito alcun controllo di esistenza
FK:table indica che il valore campo referenzia un corrispondente valore presente sulla master table indicata. Il nome usato non è quello della tabella fisica (TABLE_NAME) ma quello simbolico (TABLE_START).
Se il valore sulla master table viene modificato dalla procedura di importazione (perché, ad esempio, si tratta di un campo da generare come AUTOINCREMENT), il valore sulla tabella accessoria sarà automaticamente e corrispondentemente modificato. In caso di tabelle con primary key composta da più campi, l'ordine di riferimento è strettamente posizionale. E' perciò rigorosamente necessario inserire i campi della foreign key sulla detail table esattamente nello stesso ordine dei campi della primary key sulla master table
AUTOINCREMENT il valore del campo sarà generato al momento dell'importazione in modo da garantirne l'univocità; si utilizza soprattutto (o meglio: esclusivamente) per le primary keys prive di valore intrinseco; l'opzione AUTOINCREMENT è incompatibile con l'opzione SQL
REM REMarks, ovvero commento, ovvero il campo viene trattato sotto tutti gli aspetti ma non viene importato nel database di destinazione
commenti informazioni sul significato o sulla struttura del campo

SEZIONE DATI

La sezione dati può avere due formati:

In entrambi i casi i dati devono avere lo stesso formato e seguire le seguenti regole:

OS_EXECUTE_BEFORE/OS_EXECUTE_AFTER (esecuzione comando Sistema Operativo)

Durante l'esecuzione dello script di esportazione è possibile eseguire dei comandi batch (formato BAT o CMD) usando la sintassi: OS_EXECUTE_xxxxx=comando.
BEFORE fa eseguire il comando prima dell'esportazione, AFTER lo fa eseguire DOPO l'esportazione.
Se il comando è definito sull'intestazione di una specifica tabella, i comandi sono eseguiti rispettivamente prima o dopo l'esportazione della tabella.
Il comando può contenere variabili di ambiente del sistema operativo (esempio: %ProgramFilesDir%, oppure %TEMP%).

MESSAGEBOX

Per emettere un messaggio è possibile usare la sintassi (vedi MESSAGEBOX esportazione per ulteriori dettagli sintattici)

MESSAGEBOX=TEXT=testo;CAPTION=titolo[;FLAGS=numero]

ABORT

Interrompe l'importazione emettendo un messaggio di errore.

ABORT=TEXT=testo;CAPTION=titolo

USE_STORED_PROCEDURE

Valori ammessi: ON, OFF. Default: ON.
Se l'opzione è attiva il programma carica tutti i comandi di esportazione su una table transitoria (SQL_batch) e quindi una stored procedure (exec_SQL_batch()) per eseguirli. Questa modalità è utile in certi casi particolari per trattare dati che altrimenti creerebbero problemi di esecuzione.

DBS

DBS, ovvero DataBase System, indica il database su cui si sta operando.
I possibili valori sono ASA (Adaptive Server Anywhere), SQLSERVER, OTHER.
Il default è ASA.

UPDATE_VIDEO_FREQUENCY

UPDATE_VIDEO_FREQUENCY=numero di records

Indica ogni quanti records il programma deve aggiornare il video durante la fase di importazione. Default = 7.

MACRO PREDEFINITE

In tutti i punti del file da importare è possibile usare una delle seguenti macro predefinite. Risulta particolarmente comodo utilizzare queste macro sulle clausole IMPORT_OPTIONS del file che definisce il formato di esportazione.

macro disponibile a partire dalla versione valore sostituito
@@datetime_exportation 1.02 timestamp (YYYY-MM-DD HH:MM:SS) del momento in cui è avvenuta l'esportazione
@@computer_name 1.02 computer che esegue l'importazione
@@ 1.02 nome dell'operatore che esegue l'importazione

Pagina base del manuale di JOLLY       ESPORTAZIONE in formato JASCII