Su richiesta di un collega che proviene da sistemi con database relazionali molto diversi da SQL Server, una breve serie di screenshot e indicazioni sull’uso del wizard di importazione dati in SQL Server. In questo caso l’import è quello di un database Access, ma vedrete dagli screenshot come SQL Server abbia dei driver di importazione più o meno per qualsiasi cosa.
Cosa fare prima di tutto
I driver di importazione, importano tabelle all’interno di un database esistente, pertanto la prima cosa da fare è generare il database di destinazione in SQL Server.
Per creare un Database, fate tasto destro sulla cartella Database del Server SQL in Sql Management studio e selezionate New Database. (Se per vostra disgrazia avete la versione italiana, dovrete fare le traduzioni perché io non uso mai versioni localizzate dei server o dei sistemi di sviluppo).
Prima di creare il database, sarete andati sul vostro disco, nella cartella Data mappata sul vostro SQL Server ed avrete generato, così come mostra l’immagine qui sopra, una cartella con il nome del database (o un nome a voi gradito. Se vi chiedete perché io ho i database su una cartella che si chiama D:\Sql.dir\Data e non sotto la cartella Program Files vuol dire che non avete letto come si installa SQL Server in modo serio, sui miei post, ce n’è uno di un paio di settimane fa che mostra l’installazione di SQL Server 2012 su Windows 10.
Dopo aver cliccato su New Database, e avergli dato il nome che preferite, come ho fatto io, impostate la cartella dove volete che il database sia generato. Fate attenzione che la cartella deve essere contenuta nelle cartelle di SQL Server, perché su tali cartelle siamo certi che l’utente del servizio di SQL Server ha i permessi di leggere e scrivere e quindi può creare e aggiornare i database. Se salvate il file in altro luogo, potrebbe non essere utilizzabile.
Una volta generato, il vostro database apparirà nella lista dei database del vostro server, fate tasto destro, e sul menu Tasks selezionate Import Data.
Si apre il wizard di importazione, se non gli avete detto il contrario o se non lo avete mai usato, presenterà una finestra di presentazione, prima di questa, che potete dismettere con il Next. In questa prima schermata sceglieremo qual’è la sorgente dei dati che importiamo, quindi nel nostro caso andremo a indicare che è un database Access e selezioneremo il suo nome.
Nella prima combobox in alto, premete la freccia in su o usate il mouse per risalire fino a trovare il driver per Microsoft Access e selezionatelo.
Dopo averlo fatto, apparirà la casella di testo per cercare e selezionare il database nel mio caso SABRINA.mdb. Premete Next per proseguire.
Nella seconda schermata, abbiamo la selezione della destinazione dell’import che, se abbiamo usato il menu come indicato, è già impostata sul nostro PC e sul database corretto. Premiamo Next per continuare.
Selezioniamo l’opzione copia dati da una o più tabelle o viste. Premiamo Next per continuare.
Apparirà una lista delle tabelle presenti in Access, assieme a tutte le viste. Io in questo caso ho selezionato tutto, voi potete scegliere quel che vi interessa importare, attenzione che ognuno degli oggetti diverrà una tabella. Non Importa se su Access fosse una query. Quindi magari selezionate solo le tabelle e non le query.
premendo il tasto Edit Mappings, per access si attivano una serie di opzioni che servono se reimportate i dati su tabelle esistenti. Per la prima importazione, le checkbox possono essere tutte non selezionate.
In questa pagina, viene fatto un riepilogo di cosa sarà importato e quali sono i tipi di dati generati, e quale operazione farà SQL Server in caso di errore (nelle 2 combobox). solitamente io lascio tutto com’è e premo Next.
Se è un operazione una tantum, ovviamente il Run Immediately è d’obbligo, e quindi un Next.
Se si verificassero errori, come in questo caso, un click sul link con i Messages ci dirà cosa non va bene, permettendoci di rifare il tutto (cancellando e ricreando il database prima di farlo).
Se tutto invece va bene, allora avremo un Successo completo.
Nel nostro Database, aprendo la cartella Tables troveremo tutte le tabelle che abbiamo importato.
Queste tabelle però non hanno ne chiavi primarie, ne indici, ne relazioni, queste devono essere rigenerate a mano. vediamo come:
Scegliamo una tabella, aprendo la cartella columns che ci mostra le colonne, vedrete che non c’è alcun segnalino che indica la Primary Key di tabella.
Per andare a rigenerare indici e chiavi primarie nonché le relazioni, tasto destro sulla tabella e selezioniamo l’opzione Design.
Ci troveremo con una finestra sulla destra che contiene la lista delle colonne con i loro nomi, tipo e nullabilità. Inoltre se guardate in basso, troverete una lista delle property della colonna, dove potrete osservare e nel caso modificare varie caratteristiche della colonna stessa, come ad esempio il formato dei numeri e l’indicazione se si tratta di un contatore con numerazione automatica (identity, yes + identity seed ed increment).
Per indicare che la colonna, nel nostro caso IDAnno è la chiave primaria, basta selezionarla e fare click sul tasto con la chiavetta. Attenzione, se la chiave primaria è formata da più campi, selezionate tutti i campi che la compongono (usando shift o control) e premete il bottone con la chiavetta.
Oltre alla chiave primaria, i due tasti a fianco permettono di definire le relazioni quando vi siano tabelle relazionate, e permettono di definire degli indici sui campi della tabella. Gli indici se non lo sapeste servono a rendere molto più veloci le Query, così ad esempio, se avete una tabella Movimenti di magazzino, con ID numerico create la PK sull’ID numerico e poi potete creare un indice ad esempio sulla data per rendere rapide le selezioni del tipo “Dammi tutti i movimenti dal giorno x al giorno y.
A questo punto direi che devo augurarvi buon lavoro, e buon divertimento.