Differenze tra le versioni di "Bonifiche - Importazione file"

Da wiki.maggioli.it.
Jump to navigation Jump to search
imported>Arizzi
imported>Arizzi
Riga 5: Riga 5:


L'utente deve selezionare l'applicazione di cui desidera eseguire un import.
L'utente deve selezionare l'applicazione di cui desidera eseguire un import.
E' qui possibile eseguire un'ottimizzazione del database, nel caso questo sia Oracle. La procedura richiede qualche minuto ma è fortemente consigliata prima di un'importazione complessa.
E' qui possibile eseguire un'ottimizzazione del database, nel caso questo sia Oracle. La procedura richiede qualche minuto ma è fortemente consigliata prima di un'importazione complessa.
E' inoltre possibile lanciare i benckmark che permettono di avere una prima idea della situazione delle performance del server (si consiglia di eseguire i benchmark sul processore del server e sulle query del db).
E' inoltre possibile lanciare i benckmark che permettono di avere una prima idea della situazione delle performance del server (si consiglia di eseguire i benchmark sul processore del server e sulle query del db).
Si sconsiglia di avviare una bonifica se le prestazioni rilevate dai benchmark non siano soddisfacenti
Si sconsiglia di avviare una bonifica se le prestazioni rilevate dai benchmark non siano soddisfacenti
Riga 12: Riga 12:
In questa fase, si deve scegliere il progetto specifico da importare. E' possibile trovare un help dettagliato per l'importazione dell'applicazione selezionata con il pulsante in basso.
In questa fase, si deve scegliere il progetto specifico da importare. E' possibile trovare un help dettagliato per l'importazione dell'applicazione selezionata con il pulsante in basso.
E' inoltre possibile visualizzare il tracciato di importazione con un click di destro sul progetto da importare
E' inoltre possibile visualizzare il tracciato di importazione con un click di destro sul progetto da importare
Nel caso si vogliano eseguire più importazioni in sequenza è qui possibile selezionare il progetto a cui accodare l'import corrente in modo che quest'ultimo sia avviato solo dopo la conclusione del precedente. In caso di errori sintattici o di validazione, il secondo import sarà comunque avviato, a meno che non si accenda l'appostito flag "Avvia solo se non ci sono errori"
Nel caso si vogliano eseguire più importazioni in sequenza è qui possibile selezionare il progetto a cui accodare l'import corrente in modo che quest'ultimo sia avviato solo dopo la conclusione del precedente. In caso di errori sintattici o di validazione, il secondo import sarà comunque avviato, a meno che non si accenda l'appostito flag "Avvia solo se non ci sono errori"
Dopo questa fase vengono eseguiti dei controlli per assicurarsi che l'archivio non contenga dati che potrebbero compromettere l'esito di un qualsiasi import, per cui si noterà un rallentamento dopo questa fase
Dopo questa fase vengono eseguiti dei controlli per assicurarsi che l'archivio non contenga dati che potrebbero compromettere l'esito di un qualsiasi import, per cui si noterà un rallentamento dopo questa fase


== Selezione file ==
== Selezione file ==
Riga 20: Riga 20:


'''Nota bene:''' tutti i file di testo devono avere il charset windows-1252 (http://en.wikipedia.org/wiki/Windows-1252)
'''Nota bene:''' tutti i file di testo devono avere il charset windows-1252 (http://en.wikipedia.org/wiki/Windows-1252)
Qui è possibile impostare:
Qui è possibile impostare:
=== Intervallo di idObject ===
=== Intervallo di idObject ===
per importare un sottoinsieme dei dati (per eseguire test veloci)
per importare un sottoinsieme dei dati (per eseguire test veloci)
=== Impostare la modalità debug ===
=== Impostare la modalità debug ===
utile durante i test, in quanto in caso di errori si blocca tutto subito e non cerca di importare comunque
utile durante i test, in quanto in caso di errori si blocca tutto subito e non cerca di importare comunque
=== Dimensione del blocco ===
=== Dimensione del blocco ===
La dimensione del blocco rappresenta il range di id-object che vengono importati in una transazione, quindi se la dimensione vale 1000 significa che in una transazione vengono importati tutti i record di tutte le tabelle coinvolte aventi id-object tra 0 e 1000, poi tra 1001 e 2000, etc. etc
La dimensione del blocco rappresenta il range di id-object che vengono importati in una transazione, quindi se la dimensione vale 1000 significa che in una transazione vengono importati tutti i record di tutte le tabelle coinvolte aventi id-object tra 0 e 1000, poi tra 1001 e 2000, etc. etc
Questo può comportare 2 problemi:
Questo può comportare 2 problemi:
*Blocco troppo piccolo: poiché per importare un blocco sono eseguite anche n query per i look-up e molto altro, se in un blocco si trovano solo 3 record perché gli id-object sono molto sparsi, l’import procederà molto lentamente, anche se in modo uniforme. Se tuttavia alcune query di lookup, causa cattiva configurazione, risultano molto lente, l’intero processo rischia di richiedere giorni.
*Blocco troppo piccolo: poiché per importare un blocco sono eseguite anche n query per i look-up e molto altro, se in un blocco si trovano solo 3 record perché gli id-object sono molto sparsi, l’import procederà molto lentamente, anche se in modo uniforme. Se tuttavia alcune query di lookup, causa cattiva configurazione, risultano molto lente, l’intero processo rischia di richiedere giorni.
*Blocco troppo grande: in questo caso il rischio è che avendo in RAM tutti gli oggetti da inserire, si generi un OutOfMemory. Inoltre con SQL Server 2000 le query risultano piu’ lente con blocchi grandi, motivo per cui la dimensione viene automaticamente dimezzata nel caso di SQL 2000
*Blocco troppo grande: in questo caso il rischio è che avendo in RAM tutti gli oggetti da inserire, si generi un OutOfMemory. Inoltre con SQL Server 2000 le query risultano piu’ lente con blocchi grandi, motivo per cui la dimensione viene automaticamente dimezzata nel caso di SQL 2000
La maschera può proporre il valore della dimensione del blocco in 2 modi:
La maschera può proporre il valore della dimensione del blocco in 2 modi:
*Dimensione del blocco consigliata: indica che nel tracciato è indicato un valore specifico per quell’importazione
*Dimensione del blocco consigliata: indica che nel tracciato è indicato un valore specifico per quell’importazione
*Dimensione del blocco suggerita: è semplicemente il valore predefinito per una generica importazione
*Dimensione del blocco suggerita: è semplicemente il valore predefinito per una generica importazione


=== Numero minimo di record per blocco ===
=== Numero minimo di record per blocco ===
Anche questo parametro è impostabile sia da interfaccia che da XML (attributo min-block-size).
Anche questo parametro è impostabile sia da interfaccia che da XML (attributo min-block-size).
Rappresenta il numero minimo di record da importare in un blocco, per superare il precedente problema del blocco troppo piccolo. Il programma calcola quanti record sono presenti nel blocco e se questo numero è inferiore al minimo qui impostato aumenta la dimensione del blocco (della dimensione stessa, cioè da 1000 a 2000, 3000, etc). Attenzione che gli id-object sono scarsissimi e la dimensione del blocco piccola, impiegherà qualche minuto a trovare la dimensione giusta. Se questo valore non è impostato nell’XML il programma propone in automatico la metà della dimensione del blocco (attenzione che le due unità di misura sono diverse, questo parametro indica i record, l’altro gli id-object).
Rappresenta il numero minimo di record da importare in un blocco, per superare il precedente problema del blocco troppo piccolo. Il programma calcola quanti record sono presenti nel blocco e se questo numero è inferiore al minimo qui impostato aumenta la dimensione del blocco (della dimensione stessa, cioè da 1000 a 2000, 3000, etc). Attenzione che gli id-object sono scarsissimi e la dimensione del blocco piccola, impiegherà qualche minuto a trovare la dimensione giusta. Se questo valore non è impostato nell’XML il programma propone in automatico la metà della dimensione del blocco (attenzione che le due unità di misura sono diverse, questo parametro indica i record, l’altro gli id-object).
Nel caso si imposti un limite agli id-object (durante il debug) questo parametro si annulla automaticamente.
Nel caso si imposti un limite agli id-object (durante il debug) questo parametro si annulla automaticamente.


=== Comando ===
=== Comando ===
comando (bacth/script) da eseguire sul server al termine dell'importazione
comando (bacth/script) da eseguire sul server al termine dell'importazione
Il comando può servire per fare automaticamente il backup del dbms a fine importazione.
E' necessario che il comando produca un file che deve chiamarsi "error.txt" e deve
essere nella stessa cartella del batch/script che viene lanciato.
Se il file contiene solamente il carattere 0 (seguito da un newline, opzionalmente),
allora si considera che il comando è stato eseguito correttamente.
Viceversa l'import andrà in errore riportando nell'errore il contenuto del file
'''Limitazioni:'''
- La cartella e il nome del file batch non devono contenere spazi
'''Esempio (SQL Server):'''
File batch:
----
@ECHO OFF
del "C:\Backup.bak"
osql -Usa -Psystem -i"c:\batch\BackupProva.sql" > c:\batch\ErrBackUp.txt
if not exist "C:\Backup.bak" goto Errore
copy c:\batch\ok.txt c:\batch\error.txt
exit
:Errore
Echo Errore nel backup > c:\batch\error.txt
type  ErrBackUp.txt >> c:\batch\error.txt
exit
----
File SQL:
BACKUP DATABASE Prova TO DISK = 'C:\Backup.bak'
----
File Ok.txt
0


=== Note ===
=== Note ===
Riga 46: Riga 88:


== Parametri ==
== Parametri ==
Questo passaggio è opzionale, non tutte le importazioni lo prevedono. Solitamente serve a specificare alcuni valori predefiniti (es. se l'import deve considerare importi in Lire o in Euro) non presenti nei file di testo.
Questo passaggio è opzionale, non tutte le importazioni lo prevedono. Solitamente serve a specificare alcuni valori predefiniti (es. se l'import deve considerare importi in Lire o in Euro) non presenti nei file di testo.


== Avvio dell'importazione ==
== Avvio dell'importazione ==
Qui si decide se eseguire subito l'importazione, se accodarla ad una precedente importazione già avviata, oppure pianificarla per eseguirla in seguito (tipicamente dopo l'orario di fine lavoro). Nel caso ci siano altri utenti collegati e il database sia SQL Server è fortemente consigliato pianificare le importazioni, altrimenti si rischiano dei blocchi con le operazioni svolte dagli altri utenti. In caso di avvio immediato è possibile scegliere se:
Qui si decide se eseguire subito l'importazione, se accodarla ad una precedente importazione già avviata, oppure pianificarla per eseguirla in seguito (tipicamente dopo l'orario di fine lavoro). Nel caso ci siano altri utenti collegati e il database sia SQL Server è fortemente consigliato pianificare le importazioni, altrimenti si rischiano dei blocchi con le operazioni svolte dagli altri utenti. In caso di avvio immediato è possibile scegliere se:
*Privilegiare la velocità: l'importazione usa come dimensione del blocco quella configurata in modo tale da ridurre il tempo complessivo dell'import. Questo a scapito di transazioni che potrebbero essere lunghe e quindi generare dei lock se il db è SQL Server, l'importazione coinvolge tabelle condivise da varie applicazioni (Indice Generale e Territorio) e se ci sono altri utenti che stanno lavorando
*Privilegiare la velocità: l'importazione usa come dimensione del blocco quella configurata in modo tale da ridurre il tempo complessivo dell'import. Questo a scapito di transazioni che potrebbero essere lunghe e quindi generare dei lock se il db è SQL Server, l'importazione coinvolge tabelle condivise da varie applicazioni (Indice Generale e Territorio) e se ci sono altri utenti che stanno lavorando
*Privilegiare la multiutenza: l'importazione sarà avviata riducendo ad 1/10 la dimensione del blocco, causando quindi un rallentamento che può arrivare al 50%, però generando transazioni molto piu' brevi e riducendo così il pericolo dei lock. Questa opzione può essere molto utile quando i dati da importare sono pochi e l'aumento conseguenze dei tempi è irrilevante (da 10 a 15 minuti per esempio è piu' che accettabile).
*Privilegiare la multiutenza: l'importazione sarà avviata riducendo ad 1/10 la dimensione del blocco, causando quindi un rallentamento che può arrivare al 50%, però generando transazioni molto piu' brevi e riducendo così il pericolo dei lock. Questa opzione può essere molto utile quando i dati da importare sono pochi e l'aumento conseguenze dei tempi è irrilevante (da 10 a 15 minuti per esempio è piu' che accettabile).


L'opzione predefinità è la prima a meno che: il db sia SQL Server, e ci siano altri utenti collegati
L'opzione predefinità è la prima a meno che: il db sia SQL Server, e ci siano altri utenti collegati


In questa fase si può anche vedere quanti sono (e quali se si hanno i permessi) gli altri utenti collegati. Naturalmente se gli utenti non chiudono il client risultano comunque collegati, in quel caso il pulsante con la lente mostra anche il periodo di inattività
In questa fase si può anche vedere quanti sono (e quali se si hanno i permessi) gli altri utenti collegati. Naturalmente se gli utenti non chiudono il client risultano comunque collegati, in quel caso il pulsante con la lente mostra anche il periodo di inattività

Versione delle 12:57, 22 lug 2011

Il processo di importazione avviene attraverso una procedura guidata composta di farie fasi:


Applicazione

L'utente deve selezionare l'applicazione di cui desidera eseguire un import. E' qui possibile eseguire un'ottimizzazione del database, nel caso questo sia Oracle. La procedura richiede qualche minuto ma è fortemente consigliata prima di un'importazione complessa. E' inoltre possibile lanciare i benckmark che permettono di avere una prima idea della situazione delle performance del server (si consiglia di eseguire i benchmark sul processore del server e sulle query del db). Si sconsiglia di avviare una bonifica se le prestazioni rilevate dai benchmark non siano soddisfacenti

Progetti

In questa fase, si deve scegliere il progetto specifico da importare. E' possibile trovare un help dettagliato per l'importazione dell'applicazione selezionata con il pulsante in basso. E' inoltre possibile visualizzare il tracciato di importazione con un click di destro sul progetto da importare Nel caso si vogliano eseguire più importazioni in sequenza è qui possibile selezionare il progetto a cui accodare l'import corrente in modo che quest'ultimo sia avviato solo dopo la conclusione del precedente. In caso di errori sintattici o di validazione, il secondo import sarà comunque avviato, a meno che non si accenda l'appostito flag "Avvia solo se non ci sono errori" Dopo questa fase vengono eseguiti dei controlli per assicurarsi che l'archivio non contenga dati che potrebbero compromettere l'esito di un qualsiasi import, per cui si noterà un rallentamento dopo questa fase

Selezione file

Qui si selezionano i file da importare potendo anche selezionare una cartella e quindi prendere in automatico i file qui contenuti, se il nome corrisponde a quello indicato nel progetto di importazione.


Nota bene: tutti i file di testo devono avere il charset windows-1252 (http://en.wikipedia.org/wiki/Windows-1252) Qui è possibile impostare:

Intervallo di idObject

per importare un sottoinsieme dei dati (per eseguire test veloci)

Impostare la modalità debug

utile durante i test, in quanto in caso di errori si blocca tutto subito e non cerca di importare comunque

Dimensione del blocco

La dimensione del blocco rappresenta il range di id-object che vengono importati in una transazione, quindi se la dimensione vale 1000 significa che in una transazione vengono importati tutti i record di tutte le tabelle coinvolte aventi id-object tra 0 e 1000, poi tra 1001 e 2000, etc. etc Questo può comportare 2 problemi:

  • Blocco troppo piccolo: poiché per importare un blocco sono eseguite anche n query per i look-up e molto altro, se in un blocco si trovano solo 3 record perché gli id-object sono molto sparsi, l’import procederà molto lentamente, anche se in modo uniforme. Se tuttavia alcune query di lookup, causa cattiva configurazione, risultano molto lente, l’intero processo rischia di richiedere giorni.
  • Blocco troppo grande: in questo caso il rischio è che avendo in RAM tutti gli oggetti da inserire, si generi un OutOfMemory. Inoltre con SQL Server 2000 le query risultano piu’ lente con blocchi grandi, motivo per cui la dimensione viene automaticamente dimezzata nel caso di SQL 2000

La maschera può proporre il valore della dimensione del blocco in 2 modi:

  • Dimensione del blocco consigliata: indica che nel tracciato è indicato un valore specifico per quell’importazione
  • Dimensione del blocco suggerita: è semplicemente il valore predefinito per una generica importazione

Numero minimo di record per blocco

Anche questo parametro è impostabile sia da interfaccia che da XML (attributo min-block-size). Rappresenta il numero minimo di record da importare in un blocco, per superare il precedente problema del blocco troppo piccolo. Il programma calcola quanti record sono presenti nel blocco e se questo numero è inferiore al minimo qui impostato aumenta la dimensione del blocco (della dimensione stessa, cioè da 1000 a 2000, 3000, etc). Attenzione che gli id-object sono scarsissimi e la dimensione del blocco piccola, impiegherà qualche minuto a trovare la dimensione giusta. Se questo valore non è impostato nell’XML il programma propone in automatico la metà della dimensione del blocco (attenzione che le due unità di misura sono diverse, questo parametro indica i record, l’altro gli id-object). Nel caso si imposti un limite agli id-object (durante il debug) questo parametro si annulla automaticamente.

Comando

comando (bacth/script) da eseguire sul server al termine dell'importazione Il comando può servire per fare automaticamente il backup del dbms a fine importazione. E' necessario che il comando produca un file che deve chiamarsi "error.txt" e deve essere nella stessa cartella del batch/script che viene lanciato.

Se il file contiene solamente il carattere 0 (seguito da un newline, opzionalmente), allora si considera che il comando è stato eseguito correttamente.

Viceversa l'import andrà in errore riportando nell'errore il contenuto del file

Limitazioni:

- La cartella e il nome del file batch non devono contenere spazi

Esempio (SQL Server):

File batch:


@ECHO OFF del "C:\Backup.bak" osql -Usa -Psystem -i"c:\batch\BackupProva.sql" > c:\batch\ErrBackUp.txt if not exist "C:\Backup.bak" goto Errore copy c:\batch\ok.txt c:\batch\error.txt exit

Errore

Echo Errore nel backup > c:\batch\error.txt type ErrBackUp.txt >> c:\batch\error.txt exit


File SQL:

BACKUP DATABASE Prova TO DISK = 'C:\Backup.bak'


File Ok.txt

0

Note

Note che permettono di identificare un'import dall'altro con lo stesso tracciato (es. Import delle Anagrafiche Uniche per l'Anagrafe, piuttosto di Import delle Anagrafiche Uniche per l'ICI)

Parametri

Questo passaggio è opzionale, non tutte le importazioni lo prevedono. Solitamente serve a specificare alcuni valori predefiniti (es. se l'import deve considerare importi in Lire o in Euro) non presenti nei file di testo.

Avvio dell'importazione

Qui si decide se eseguire subito l'importazione, se accodarla ad una precedente importazione già avviata, oppure pianificarla per eseguirla in seguito (tipicamente dopo l'orario di fine lavoro). Nel caso ci siano altri utenti collegati e il database sia SQL Server è fortemente consigliato pianificare le importazioni, altrimenti si rischiano dei blocchi con le operazioni svolte dagli altri utenti. In caso di avvio immediato è possibile scegliere se:

  • Privilegiare la velocità: l'importazione usa come dimensione del blocco quella configurata in modo tale da ridurre il tempo complessivo dell'import. Questo a scapito di transazioni che potrebbero essere lunghe e quindi generare dei lock se il db è SQL Server, l'importazione coinvolge tabelle condivise da varie applicazioni (Indice Generale e Territorio) e se ci sono altri utenti che stanno lavorando
  • Privilegiare la multiutenza: l'importazione sarà avviata riducendo ad 1/10 la dimensione del blocco, causando quindi un rallentamento che può arrivare al 50%, però generando transazioni molto piu' brevi e riducendo così il pericolo dei lock. Questa opzione può essere molto utile quando i dati da importare sono pochi e l'aumento conseguenze dei tempi è irrilevante (da 10 a 15 minuti per esempio è piu' che accettabile).

L'opzione predefinità è la prima a meno che: il db sia SQL Server, e ci siano altri utenti collegati

In questa fase si può anche vedere quanti sono (e quali se si hanno i permessi) gli altri utenti collegati. Naturalmente se gli utenti non chiudono il client risultano comunque collegati, in quel caso il pulsante con la lente mostra anche il periodo di inattivitÃ