|
EXPORTAZIONE in formato JASCIIFORMATO DEL FILE(i campi facoltativi sono indicati tra parentesi quadre)
La doppia barra commenta il
resto della riga su cui si trova (in qualunque posizione). IF:condizione;istruzioneL'istruzione specificata viene eseguita solo se la condizione è
verificata. La condizione deve essere una condizione booleana contenente gli
operatori = != <
> <= >= IF:@@QTA=0;SKIP_TABLE INCLUDELa clausola INCLUDE, che deve essere
specificata sulla prima colonna della riga, carica all'interno del testo il
contenuto del file specificato. INCLUDE=prova.txt CAPTION=Inserire il titolo del formato
di esportazione, ovvero la sua descrizione breve. Il valore inserito sarà
utilizzato, ad esempio, nelle finestre di selezione del formato di esportazione
da utilizzare. EXPORT_TYPE={JASCII|TEXT}Questa opzione definisce il tipo di esportazione:
L'opzione è facoltativa; il valore default è JASCII. MACRO
Il termine MACRO è da intendersi nel senso in cui è usato nel linguaggio C:
ogni occorrenza dell'identificatore di macro viene rigidamente sostituita dal
valore assegnato alla macro. L'unica eccezione a questo comportamento è rappresentata
da eventuali espressioni SQL che vengono interpretate immediatamente (cioè
prima dell'assegnazione). E' possibile effettuare dichiarazioni di macro secondo uno dei seguenti formati:
La prima forma di dichiarazione consiste in una mera
assegnazione di un certo valore alla macro. La seconda forma delle macro è interattiva
in quanto richiede all'utente di indicare una
risposta al momento dell'esportazione dei dati.
Il valore di tutte le opzioni può essere indicato da una espressione SQL racchiusa tra §. Tale valore viene determinato immediatamente, e non viene espanso ad ogni citazione della macro. Esempi di dichiarazione di macro interattive:
L'ordine di interpretazione delle macro è il seguente:
MACRO PREDEFINITE
TEXT_HEADER e TEXT_FOOTERDefiniscono una o più righe di testo che vengono scritte in testa al file prodotto dall'esportazione. Ad esempio:
L'opzione può essere utilizzata
sia sull'intestazione del file che sull'intestazione di ciascuna delle tabelle
esportate. OUTPUT_FILENAME_FORMATNome del file di output. Se non
specificato viene utilizzato un nome default.
Esempio: se oggi è il primo febbraio 2003 e sono le 12:15:44, l' istruzione OUTPUT_FILENAME_FORMAT=EXP_BOLLE_%d_%t.DAT produrrà un nome di file del tipo EXP_BOLLE_20030201_121544.DAT.
EMAIL_ADDRESSDopo la generazione del file
viene proposta in automatico la spedizione dello stesso all’indirizzo
specificato. Se l’indirizzo viene lasciato vuoto, l’indirizzo la spedizione
sarà proposta ugualmente e l’indirizzo dovrà essere specificato al momento
dell’invio. SCRIPT_VERSIONIdentificativo della versione dello script utilizzato per generare l’output. E’ un valore alfanumerico che funge esclusivamente da riferimento. SQL_EXECUTE_BEFORE_EXPORTIstruzione SQL che viene
eseguita prima dell’importazione. La clausola può essere ripetuta. SQL_EXECUTE_AFTER_EXPORTIstruzione SQL che viene
eseguita dopo l’importazione. La clausola può essere ripetuta. TABLE_START=nome tabella da esportareIndicare l'inizio del blocco di
istruzioni relative ad una tabella da cui si desidera esportare dati.
A volte è necessario trattare più volte la stessa tabella nella stessa procedura di esportazione/reimportazione. Poiché è impossibile ripetere l'attributo TABLE_START con lo stesso nome di tabella bisogna utilizzare la clausola TABLE_NAME. SQL_SELECTContiene l'istruzione di selezione dei dati che si desidera esportare. NB: durante la preparazione
all'esportazione JOLLY carica il riferimento ai dati da esportare sulla table
TEMP. MESSAGE_FIELDIdentifica il record e che viene utilizzata per la generazione di eventuali messaggi relativi a specifici records. Se non indicata, all'occorrenza viene utilizzato il primo campo (o la primary key, se definita). Non può essere un’espressione, deve essere per forza il nome di un campo (oppure può essere un’espressione SQL definita dalla clausola SQL_SELECT. Esempio: MESSAGE_FIELD = NUMERODOC DATAFILESe questa clausola è assente, i
dati vengono scritti sul file principale di esportazione. DATAFILE=nomefile Se privo di path, nomefile sarà
creato sulla cartella default. Se il file indicato esiste già, sarà cancellato
senza alcun avvertimento prima di eseguire l’operazione di esportazione. SQL_EXECUTE_AFTER_ROW = espressione SQLConsente di specificare una espressione SQL che deve essere eseguita subito dopo l’importazione di ogni riga; ogni espressione può occupare una riga. E’ possibile indicare il nome di campi della riga, compresi tra coppie di $. E’ possibile indicare più volte l’opzione. SQL_EXECUTE_AFTER_EXPORT
= espressione SQL
|
TIPO può essere:
| |||||||||||||||||
LEN è la lunghezza del campo; se negativa il campo viene allineato a destra; | |||||||||||||||||
DEC è il numero di decimali da esportare; valido solo per campi floating o currency; |
PK indica che la colonna fa parte della Primary Key per la table.
FK indica l'esistenza di una FOREIGN KEY con la table specificata; utilizzare il nome indicato sulla clausola TABLE_START. Non viene eseguito alcun controllo sul nome della tabella referenziata.
NB: le opzioni PK e FK possono essere utili perché caricano sul file esportato informazioni necessarie per il trattamento dei dati.
Per i tipi stringa e blob è possibile utilizzare, in alternativa alla dichiarazione di lunghezza del campo, l'indicatore * (asterisco), che indica che il campo è a lunghezza variabile. Il valore dei campi marcati con l'asterisco viene riportato su righe dati supplementari, in ordine di dichiarazione.
Poiché il
file prodotto dall'esportazione è un file ascii, i campi
BLOB vengono convertiti in sequenze di codici esadecimali (un codice a due
cifre per ogni carattere: ad esempio la
stringa "ABC 123" viene scritta come "41424320313233"). Tale
modalità, benché non particolarmente efficiente od economica, è decisamente comoda perché consente di trattare qualunque tipo di
oggetto in modo semplice e all'interno di un comune file di testo. decodifica_hex(IN @s long varchar) : long binary che deve accettare in
input la stringa contenente i codici esadecimali e rendere il
corrispondente valore blob (long binary). Ad esempio: decodifica_hex('41424320313233')
= 'ABC123'. codifica_hex(IN @s long binary) : long varchar In particolare devono essere verificate le seguenti condizioni: decodifica_hex(codifica_hex( @X )) =
@X |
La clausola AUTOINCREMENT consiglia di generare un nuovo valore per il campo durante l'importazione (o quanto meno, segnala che ciò è possibile senza particolari problemi, in quanto il campo è una chiave di collegamento priva di valore intrinseco). Per la gestione delle foreign keys, vedi più sotto.
La clausola COMPUTE funziona in modo analogo ad AUTOINCREMENT, ma
il valore che deve essere assunto dal campo viene determinato dall’espressione
indicata. L’espressione sarà valutata al momento dell’importazione. Per
referenziare dei campi della tabella metterli fra coppie di $$ (esempio: $$i_codice$$).
La clausola COMPUTE deve essere usata solo su campi di tipo integer.
La clausola REM fa in modo che il campo venga esportato normalmente, ma la dichiarazione per il dato sul file di output risulti commentata. Serve per quei campi che non possono essere importati nel database di destinazione.
Il commento finale deve iniziare con un doppio trattino ( -- ). Differisce dal commento standard (//) perché viene riportato sul file esportato, mentre il commento standard viene semplicemente e bellamente ignorato.
SQL_FIELD_NAME può essere sostituito da una espressione SQL che viene eseguita al momento dell’esportazione. Tale espressione segue le seguenti regole:
deve essere delimitata da § | |
può referenziare campi della tabella in esportazione purché compresi tra $ | |
deve restituire un solo valore (gli eventuali valori successivi saranno trascurati) del tipo specificato. |
Esempio di sintassi per una espressione SQL:
NOMECAMPO=§select str_codice_export FROM pconti WHERE str_codice = '$str_codice$'§,S:-30
SQL_FIELD_NAME può essere sostituito da una espressione SQL che viene eseguita al momento della eventuale successiva importazione (durante la scrittura dei dati, ovvero dopo aver verificato e deciso che la riga deve essere importata). Tale espressione segue le seguenti regole:
deve essere delimitata da due coppie di §§ (esempio : §§select pippo from pluto§§ ) | |
può referenziare campi del record in importazione purché già letti e compresi tra $; i nomi che possono essere referenziati sono i nomi dei campi citati nella definizione di importazione; | |
il campo non genera dati, ma solamente una riga
nella definizione della table in importazione. |
Durante l'esecuzione dello script di esportazione è possibile eseguire dei
comandi batch (formato BAT o CMD) usando la sintassi: OS_EXECUTE_xxxx=comando.
BEFORE fa eseguire il comando prima dell'esportazione, AFTER dopo che
l'esportazione è terminata.
Il comando può contenere variabili di ambiente del sistema operativo (esempio:
%ProgramFilesDir%, oppure %TEMP%).
Per emettere un messaggio è possibile usare la sintassi
MESSAGEBOX=TEXT=testo;CAPTION=titolo[;FLAGS=numero]
Il valore FLAGS=NUMERO può essere assegnato attraverso le comode macro predefinite (@@ICONQUESTION, @@ICONSTOP, ....). E' equivalente al corrispondente parametro della funzione MessageBox() di Windows (mettere in OR i valori per combinarli tra loro):
OK = 0
CANCEL = 1
YESNO = 2
RETRY = 4
ICONSTOP = 16
ICONQUESTION = 32
ICONINFORMATION = 64
DEFBUTTON2 = 256
DEFBUTTON3 = 512
Se l'opzione FLAGS non è indicata, il valore utilizzato è MB_OK. Se l'utente fornisce alla MessageBox() una risposta diversa da IDOK, IDRETRY e IDYES l'operazione di esportazione viene interrotta.
Interrompe l'esportazione emettendo un messaggio di errore.
ABORT=TEXT=testo;CAPTION=titolo
La tabella NON viene esportata. Questa clausola viene solitamente usata insieme alla clausola IF.
La clausola TEXT indica l'inizio della sezione testo della sezione in cui deve essere indicato il testo da registrazione sul file per ciascuno dei records esportati. Il testo può contenere riferimenti campi della query, che vengono sostituiti con i corrispondenti valori, a patto che tali riferimenti siano racchiusi tra coppie di $. La sezione viene chiusa dalla clausola TABLE_END. Ad esempio
[...]
TEXT
TEXT 10,50,"3",0,1,1,"$$BA_str_articolo$$",
BOX 24,121,700,571,3
BARCODE 38,825,"EAN128",33,1,0,2,2,"ABCX"
PRINT 1,$$BA_fl_qta$$
TABLE_END
Al termine dell'esportazione normalmente il programma mostra un messaggio di riepilogo delle operazioni eseguite e chiede all'utente se desidera vedere il file generato. Specificando l'opzione SKIP_END_OF_WORK_MESSAGEBOX tale messaggio non viene mostrato (a meno che non vi siano segnalazioni di errore o anomalia).
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, ovvero DataBase System, indica il database su cui si sta operando.
I possibili valori sono ASA (Adaptive Server Anywhere), SQLSERVER, OTHER.
Il default è ASA.
LOG_SQL_EXPORT=[filename]
Esporta le istruzioni SQL che hanno generato l'export sul file specificato.
Se il file non è specificato, usa il nome del file del formato di exportazione
e appone l'extensione .SQL.
Filename può contenere variabili di ambiente del sistema operativo
(esempio: %ProgramFilesDir%, oppure %TEMP%).
In luogo del nome di campo possono essere utilizzate le seguenti espressioni:
simbolo | significato |
---|---|
@NULL | valore NULL |
@BLANK | stringa vuota (in realtà: riempita di spazî) |
@TODAY | funzione TODAY() |
@NOW | funzione NOW() |
@NUMERO | referenzia NUMERO |
@'STRINGA' | referenzia STRINGA |
Pagina base del manuale di JOLLY IMPORTAZIONE in formato JASCII
|