Press "Enter" to skip to content

Importare un MDB Access in SQL Server

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.

createDB

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).

createDB_02

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.

createDB_03

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.

menu_01

Una volta generato, il vostro database apparirà nella lista dei database del vostro server, fate tasto destro, e sul menu Tasks selezionate Import Data.

import_01

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.

import_02

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.

import_03

Dopo averlo fatto, apparirà la casella di testo per cercare e selezionare il database nel mio caso SABRINA.mdb. Premete Next per proseguire.

import_04

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.

import_05

Selezioniamo l’opzione copia dati da una o più tabelle o viste. Premiamo Next per continuare.

import_06

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.

import_07

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.

import_08

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.

import_09

Se è un operazione una tantum, ovviamente il Run Immediately è d’obbligo, e quindi un Next.

importresult_01

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).

importresult_02

Se tutto invece va bene, allora avremo un Successo completo.

importresult_03

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:

pk_indici_relazioni_01

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.

pk_indici_relazioni_02

Per andare a rigenerare indici e chiavi primarie nonché le relazioni, tasto destro sulla tabella e selezioniamo l’opzione Design.

pk_indici_relazioni_03

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.

pk_indici_relazioni_04

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.