Export Book to DB

Navigation:  Il Book: analisi e organizzazione dei dati > I Commands >

Export Book to DB

Previous pageReturn to chapter overviewNext page

Il Command Export Book To DB CommandExportToDB16 consente di esportare i dati presenti nel Model del Book corrente su un DB esterno.

Questo Command si compone di:

una Database Connection al DB su cui esportare i dati;

uno o più Statement che contengono specifiche istruzioni di export.

 

Gli  elementi definitori di questo Command sono impostabili mediante i seguenti riquadri, nella corrispondente UI:

General, visualizza le informazioni anagrafiche del command;

Parameter list, consente di valorizzare eventuali parametri di esecuzione;

Dynamic properties, permette di impostare dinamicamente le Properties del command;

Settings, permette la selezione di una Connection al DB su cui esportare i dati.

 

info

Il pulsante Sample del ribbon, presente nel gruppo Query del tab Home, compila automaticamente la query nel working space destinato alle Dynamic Properties.

 

Il campo Connection, nella UI del Command, consente di scegliere, mediante relativa drop-down, la Database Connection desiderata. Il pulsante ArrowRight_16 apre la Connection selezionata in una nuova finestra.

 

warning

La Database Connection desiderata deve essere presente nel Package corrente o in una sua Library.

 

Esistono due metodi equivalenti, per aggiungere un nuovo Statement ad un Command Export Book To DB:

selezionando il Command, il tasto Add Add16 del menu contestuale mostra, in aggiunta ai Command disponibili, l'opzione Statement AddStatement16;

selezionando il Command, il gruppo Commands del tab Book del ribbon espone il pulsante Statement.

Entrambe queste azioni creano, in corrispondenza del Command Export Book To DB selezionato, un sotto-elemento, denominato Statement.

 

Ogni elemento di tipo Statement Statement_16 dispone di una propria UI, dove specificare:

Name, nome da attribuire allo Statement;

Description, descrizione dello Statement da integrare nella documentazione del Package;

Iterator, ossia un oggetto del Model corrente oppure una Custom Query su cui iterare le istruzioni dello Statement;

Transaction Mode con cui caratterizzare il completamento dello Statement.

 

Le modalità di definizione di un Iteratore e la sintassi, con cui richiamarne i campi, sono analoghe a quelle descritte per gli iteratori di un Database Link.

In presenza di un iteratore, viene abilitato il flag Execute Always. Se attivo, esso forza almeno un'esecuzione dello Statement, anche in caso di iteratore privo di record.

 

Le operazioni di export vengono specificate mediante istruzioni SQL nel dialetto proprio del RDBMS di arrivo. Esse possono essere scritte nell'apposito tab SQL Script della UI di uno Statement. L'editor di testo ad esso relativo è dotato di IntelliSense e accetta istruzioni DQL (interrogazione dei dati), DML (inserimento e cancellazione dei dati) e DDL (creazione e modifica di oggetti).

Se il database di destinazione è SQL Server con opzione Linked Server attiva, è possibile anche richiamare altri oggetti del Model mediante la speciale sintassi, propria dei Backlink:

[IrionDQ].[Model].[Nome tabella].

Se il database di destinazione non è SQL Server. è comunque possibile utilizzare la sintassi dei Backink all'interno dell'iteratore.

 

In caso di connessione ad un database SQL Server, è possibile comporre le istruzioni di export in modo guidato, utilizzando l'apposito configuratore del tab Configuration.

Per impostarlo occorrono:

una o più tabella in Full Edit Mode sul Model, dette Source, da esportare;

una tabella di arrivo sul DB per ogni Source, detta Target.

 

Il tab Configuration mette a disposizione le seguenti opzioni di configurazione:

Table to Export, nome della tabella Source coinvolta nell’export;

Target, nome della corrispondente tabella Target;

Column Mapping, riquadro di impostazioni specifiche per l'export dei singoli campi della tabella Source.

 

Il riquadro Column Mapping consente di specificare:

Input, nome delle colonne da esportare nella tabella Source;

Target, nome delle corrispondenti colonne nella tabella Target.

 

L’opzione Input può essere valorizzata mediante:

il nome di uno dei campi della tabella Source;

il carattere speciale * che identifica tutti i campi della tabella Source;

una custom query sulle tabelle del Model del Book.

 

warning

In caso si utilizzi il carattere speciale * nell'opzione Input:

l’accesso all'editor per la definizione di custom query risulta disabilitato;

successive definizione puntuali dei campi della tabella Source sovrascrivono le impostazioni corrrenti del Column Mapping.

 

Il riquadro Column Mapping contiene due ulteriori opzioni:

Key permette di specificare quali colonne Input corrispondono ad una chiave primaria nella tabella Target;

KeyMode consente di specificare il tipo delle eventuali chiavi primarie sulla  tabella Target.

 

Il campo KeyMode è attivo solo per campi di tipo Key e può assumere i valori:

SameAsSource replica il valore della colonna Input nella colonna Target;

Auto assume che la colonna Target sia un campo IDENTITY.

 

In presenza di relazioni di tipo parent-child nel Model del Book, è possibile specializzare la impostazioni del Column Mapping mediante le opzioni:

ModelRelation specifica il nome della relazione di cui la tabella Source è "figlia", in modo che il sistema possa prestabilire l’ordine di esecuzione delle istruzioni;

UpdateForeignKeyMode permette al sistema di gestire opportunamente l'aggiornamento di eventuali chiavi esterne nella tabella Target.

 

info

In caso l'opzione ModelRelation non sia valorizzata, l’ordine di esecuzione delle istruzioni rispetta la sequenza delle tabelle inserite nel campo Table to Export.

 

L'opzione UpdateForeignKeyMode, in presenza di chiavi esterne, deve assumere i valori:

Cascade, in caso la colonna Target corrente sia una chiave esterna con vincolo di tipo CASCADE;

None, in caso la colonna Target corrente sia una chiave esterna con vincolo di tipo NO ACTION, SET DEFAULT o SET NULL.

 

Il tab Configuration dispone dell'ulteriore flag Align identity fields on Data Model. Se attivo, in caso di modifica di un campo IDENTITY sulla tabella Target, la tabella Source recepisce automaticamente l’aggiornamento.

 

Mediante il configuratore è possibile definire anche le seguenti opzioni avanzate per l'export:

Create table if not exist crea la tabella Target in caso non esista;

Generate INSERT statement genera un opportuno codice per l'accodamento dei record su ogni tabella Source;

Generate UPDATE statement genera un opportuno codice per l'aggiornamento dei record su ogni tabella Source;

Generate DELETE statement genera un opportuno codice per la cancellazione dei record su ogni tabella Source.

 

Ogni Command Export Book To DB si compone sempre di almeno un elemento di tipo Statement. In caso il Command contenga due o più Statement, essi vengono eseguiti in base all'ordine in cui sono visualizzati nel tab Commands. Per modificare l'ordine di esecuzione è sufficiente modificare l'ordine degli Statement mediante drag & drop.

 

Ogni Command Export Book To DB contenente due o più Statement richiede una gestione ragionata delle transazioni sul DB d'arrivo. Una transazione su una base dati è una sequenza di operazioni, che può concludersi con un successo o un insuccesso. In caso di successo, l'esito di tali operazioni diventa persistente, mentre in caso di insuccesso viene ristabilito lo stato precedente l'inizio della transazione.

Ogni Statement dispone di un'apposita proprietà per la gestione delle transazioni, detta Transaction Mode. Essa può assumere tre diversi valori:

Default, ogni istruzione dello Statement è da ritenersi eseguita o meno nell’ambito di una specifica transazione, in base alle impostazioni del RDBMS di arrivo;

Leave Open, all’inizio dello Statement il sistema apre una nuova transazione o mantiene aperta una transazione già esistente;

Commit At End, al termine dello Statement il sistema chiude una transazione precedentemente aperta con un Leave Open oppure inserisce lo Statement stesso all’interno di una specifica transazione.

 

warning

La gestione delle transazione è un argomento molto delicato. Alcune semplici regole per la definizione di transazioni in un Command Export Book To DB sono:

1.in caso il Command si componga di un unico Statement impostare il suo Transaction Mode a Default o Commit at End;

2.in caso il Command si componga di una sequenza di Statement, il primo dei quali sia un Leave Open:

mantenere lo stesso Transaction Mode per gli Statement successivi,

impostare il Transaction Mode dell'ultimo Statement a Commit At End.

Inoltre:

Default non può mai essere preceduto da uno Statement con Leave Open;

Leave Open non può essere usato nell'ultimo Statement;

tutte le istruzioni eseguite tra uno Statement Leave Open ed uno Commit At End risultano efficaci solo se quest’ultimo va a buon fine.