Esercizio: Creare tabelle, importare in blocco ed eseguire query sui dati
L'università attualmente archivia i dati in una serie di file con valori delimitati da virgole. È necessario eseguire la migrazione di questi dati nel database SQL di Azure.
In questo esercizio si creerà un server di database e un database singolo usando il servizio database SQL. Si creeranno quindi le tabelle e si importeranno i dati nel database. Si userà infine l'editor di query e l'utilità sqlcmd
per eseguire query sui dati.
Esaminare i dati delimitati da virgole già esistenti
In Azure Cloud Shell eseguire il comando seguente per scaricare i file di dati e il codice dell'applicazione per il sistema dell'università.
git clone https://github.com/MicrosoftDocs/mslearn-develop-app-that-queries-azure-sql education
Eseguire i comandi seguenti per spostare i dati di esempio nella rispettiva cartella ed elencare i file nella cartella.
mv ~/education/data ~/educationdata cd ~/educationdata ls
Questa cartella contiene tre file: courses.csv, modules.csv e studyplans.csv.
Visualizzare il contenuto del file courses.csv.
cat courses.csv
Questo file contiene i dati delimitati da virgole seguenti. I dati includono il nome e l'ID di ogni corso offerto dall'università.
ID,Course 1,Computer Science 2,Maths with Computing 3,Maths with Physics 4,Computer Science with Physics 5,Maths with Chemistry 6,Physics with Chemistry 7,Maths 8,Physics 9,Chemistry
Visualizzare il contenuto del file modules.csv.
cat modules.csv
Questo file contiene i diversi moduli che gli studenti possono usare per soddisfare i requisiti dei corsi. Ogni modulo ha un nome e un codice di identificazione.
Module Code,Title CS101,Introduction to Computer Science CS102,Java Programming CS103,Distributed Applications CS104,Cloud-based systems MA101,Foundations of Applied Maths MA102,Advanced Calculus MA103,Number Theory MA104,String Theory PH101,Foundations of Physics PH102,Basic Experimental Phyics PH103,Basic Theoretical Physics PH104,Subatomic Physics CH101,Elements of Chemistry CH102,Basic Inorganic Chemistry CH103,Basic Organic Chemistry CH104,Chemical Engineering
Visualizzare il contenuto del file studyplans.csv.
cat studyplans.csv
Questo file contiene i dati che specificano quali moduli gli studenti devono superare per completare un corso. La colonna Sequence indica l'ordine in cui gli studenti devono completare ogni modulo. Per il corso 1 (Computer Science), ad esempio, gli studenti devono superare il modulo CS101 prima del modulo MA101. Qui è riportata una parte dei dati.
Course ID,Module Code,Sequence 1,CS101,1 1,MA101,2 1,CS102,3 1,CS103,4 1,CS104,5 2,MA101,1 2,MA102,2 2,CS101,3 2,CS102,4 2,CS103,5 3,MA101,1 3,MA102,2 3,PH101,3 3,PH102,4 3,PH103,5 ...
Creare un server di database e un database con il database SQL
È il momento di creare il database e il server per l'archiviazione dei dati per l'app.
Accedere al portale di Azure usando l'account con cui è stata attivata la sandbox.
Nel menu del portale di Azure, in Servizi di Azure, selezionare Crea una risorsa.
Viene visualizzato il riquadro Crea una risorsa.
Nel riquadro del menu a sinistra selezionare Database e quindi Database SQLnell'elenco dei Servizi di Azure più diffusi.
Viene visualizzato il riquadro Crea database SQL.
Nella scheda Informazioni di base immettere i valori indicati di seguito per ogni impostazione.
Impostazione valore Dettagli del progetto Abbonamento Concierge Subscription Gruppo di risorse [Gruppo di risorse sandbox] Dettagli database Nome database Il database deve avere un nome univoco. È consigliabile usare un nome simile a coursedatabaseNNN, dove NNN è un numero casuale. Server Selezionare il collegamento Crea nuovo e nel pannello Nuovo server immettere i dettagli indicati nella tabella seguente. Usare il pool elastico SQL? No Calcolo e archiviazione Utilizzo generico Per il server immettere i valori seguenti per ogni impostazione.
Impostazione Valore Nome server courseserverNNN, dove NNN è lo stesso numero scelto per il database Accesso amministratore server azuresql Password Immettere una password che soddisfi i requisiti. Conferma password Confermare la password. Ubicazione Stati Uniti centrali Selezionare OK.
Selezionare Avanti: Rete.
Nella scheda Rete immettere i valori seguenti per ogni impostazione.
Impostazione Valore Connettività di rete Metodo di connettività Endpoint pubblico Regole del firewall Consenti alle risorse e ai servizi di Azure di accedere a questo server Sì Aggiungi indirizzo IP client corrente Sì Selezionare Rivedi e crea.
Seleziona Crea. Attendere che il server e il database vengano creati prima di continuare.
Creare le tabelle
È ora possibile creare le tabelle in cui archiviare i dati dei file con estensione csv.
Selezionare Vai alla risorsa. Viene visualizzato il database SQL per coursedatabaseNNN.
Nel riquadro del menu a sinistra selezionare Editor di query (anteprima).
Viene visualizzato il riquadro Editor di query per coursedatabaseNNN.
Immettere i seguenti valori per ogni impostazione.
Impostazione valore Autenticazione di SQL Server Account di accesso azuresql Password Specificare la password usata quando è stato creato questo utente. Nota
Se viene visualizzato un errore durante l'accesso al database, controllare l'indirizzo IP indicato nell'errore e assicurarsi che corrisponda a quello aggiunto come IP client. A tale scopo selezionare Panoramica>Imposta firewall server.
Selezionare OK per connettersi al servizio del database.
Nel riquadro Query 1 immettere l'istruzione Transact-SQL (T-SQL) seguente e quindi selezionare Esegui. Questa istruzione crea una nuova tabella in cui inserire le informazioni sui corsi. Verificare che l'istruzione venga eseguita senza errori.
CREATE TABLE Courses ( CourseID INT NOT NULL PRIMARY KEY, CourseName VARCHAR(50) NOT NULL )
Sovrascrivere l'istruzione esistente con l'istruzione seguente che crea una tabella in cui inserire i moduli. Selezionare Esegui e quindi verificare che l'istruzione venga eseguita senza errori.
CREATE TABLE Modules ( ModuleCode VARCHAR(5) NOT NULL PRIMARY KEY, ModuleTitle VARCHAR(50) NOT NULL )
Modificare l'istruzione per creare una tabella denominata
StudyPlans
e quindi selezionare Esegui.CREATE TABLE StudyPlans ( CourseID INT NOT NULL, ModuleCode VARCHAR(5) NOT NULL, ModuleSequence INT NOT NULL, PRIMARY KEY(CourseID, ModuleCode) )
Nella finestra del database selezionare il pulsante Aggiorna sulla barra degli strumenti. Espandere Tabelle e quindi espandere ogni singola tabella. Verranno visualizzate le tre tabelle (
dbo.Courses
,dbo.Modules
edbo.StudyPlans
), insieme alle colonne e alla chiave primaria per ogni tabella.Nota
dbo significa database owner (proprietario del database). Si tratta dello schema predefinito nel database. Tutte e tre le tabelle sono state create in questo schema.
Importare i dati
Tornare a Cloud Shell e assicurarsi di essere nella
educationdata
cartella .cd ~/educationdata
Creare le variabili che verranno usate nei passaggi successivi. Sostituire
NNN
con il numero usato per il database e il server.export DATABASE_NAME=coursedatabaseNNN export DATABASE_SERVER=courseserverNNN export AZURE_USER=azuresql export AZURE_PASSWORD=[enter your password]
Eseguire l'utilità
bcp
per creare un file di formato dallo schema delladbo.Courses
tabella nel database. Il file di formato specifica che i dati sono in formato carattere (-c
) e delimitati da virgole (-t,
).bcp "[$DATABASE_NAME].[dbo].[courses]" format nul -c -f courses.fmt -t, -S "$DATABASE_SERVER.database.windows.net" -U $AZURE_USER -P $AZURE_PASSWORD
Nell'editor del codice aprire
courses.fmt
. File di formato generato dal comando precedente.code courses.fmt
Il file dovrebbe avere un aspetto simile a questo:
14.0 2 1 SQLCHAR 0 12 "," 1 CourseID "" 2 SQLCHAR 0 50 "\n" 2 CourseName SQL_Latin1_General_CP1_CI_AS
Esaminare il file. I dati nella prima colonna del file con valori delimitati da virgole verranno inseriti nella colonna
CourseID
della tabelladbo.Courses
. Il secondo campo verrà inserito nella colonnaCourseName
. Alla seconda colonna, basata su caratteri, sono associate regole di confronto. Il separatore dei campi previsto nel file è la virgola. Il carattere di terminazione della riga (dopo il secondo campo) deve essere un carattere di nuova riga. In uno scenario reale è possibile che i dati non siano organizzati in modo così ordinato. Possono essere presenti separatori di campi e campi diversi in un ordine diverso rispetto alle colonne. In una situazione di questo tipo è possibile modificare il file di formato e cambiare questi elementi campo per campo. Premere CTRL+Q per chiudere l'editor.Eseguire il comando seguente per importare i dati nel file
courses.csv
nel formato specificato dal filecourses.fmt
modificato. Il flag-F 2
indica all'utilitàbcp
di avviare l'importazione dei dati dalla riga 2 nel file di dati. La prima riga contiene le intestazioni.bcp "[$DATABASE_NAME].[dbo].[courses]" in courses.csv -f courses.fmt -S "$DATABASE_SERVER.database.windows.net" -U $AZURE_USER -P $AZURE_PASSWORD -F 2
Verificare che l'utilità
bcp
importi nove righe e non segnali errori.Eseguire la sequenza di operazioni seguente per importare i dati per la
dbo.Modules
tabella dalmodules.csv
file.Generare un file di formato.
bcp "[$DATABASE_NAME].[dbo].[modules]" format nul -c -f modules.fmt -t, -S "$DATABASE_SERVER.database.windows.net" -U $AZURE_USER -P $AZURE_PASSWORD
Importare i dati dal file
modules.csv
nella tabelladbo.Modules
del database.bcp "[$DATABASE_NAME].[dbo].[modules]" in modules.csv -f modules.fmt -S "$DATABASE_SERVER.database.windows.net" -U $AZURE_USER -P $AZURE_PASSWORD -F 2
Verificare che questo comando importi 16 righe.
Eseguire la sequenza di operazioni seguente per importare i dati per la
dbo.StudyPlans
tabella dalstudyplans.csv
file.Generare un file di formato.
bcp "[$DATABASE_NAME].[dbo].[studyplans]" format nul -c -f studyplans.fmt -t, -S "$DATABASE_SERVER.database.windows.net" -U $AZURE_USER -P $AZURE_PASSWORD
Importare i dati dal file
studyplans.csv
nella tabelladbo.StudyPlans
del database.bcp "[$DATABASE_NAME].[dbo].[studyplans]" in studyplans.csv -f studyplans.fmt -S "$DATABASE_SERVER.database.windows.net" -U $AZURE_USER -P $AZURE_PASSWORD -F 2
Verificare che questo comando importi 45 righe.
Eseguire query sui dati nel database
Tornare al portale di Azure.
Selezionare Database SQL nel menu del portale di Azure.
Nel riquadro Database SQL selezionare coursedatabaseNNN. Viene visualizzato il riquadro coursedatabaseNNN.
Nel riquadro del menu a sinistra selezionare Editor di query. Viene visualizzato il riquadro Editor di query per coursedatabaseNNN.
Immettere i seguenti valori per ogni impostazione.
Impostazione valore Autenticazione di SQL Server Account di accesso azuresql Password Immettere la password per questo utente. Selezionare OK per connettersi al servizio del database.
Nel riquadro Query 1 immettere l'istruzione T-SQL seguente e quindi selezionare Esegui.
SELECT * FROM dbo.Courses
Questa istruzione consente di recuperare i dati della tabella
dbo.Courses
. Nella finestra dei risultati devono essere visualizzate nove righe.Modificare la query come indicato di seguito e quindi selezionare Esegui.
SELECT * FROM dbo.Modules
Questa volta devono essere visualizzati i moduli nella finestra Risultati, 16 righe.
Tornare a Cloud Shell ed eseguire il comando seguente per connettersi al database.
sqlcmd -S "$DATABASE_SERVER.database.windows.net" -d "$DATABASE_NAME" -U $AZURE_USER -P $AZURE_PASSWORD
Al prompt
1>
eseguire il comando T-SQL seguente per recuperare i dati dalla tabelladbo.StudyPlans
.SELECT * FROM StudyPlans; GO
Questa query deve restituire 45 righe.
Al prompt
1>
digitareexit
per chiudere l'utilità sqlcmd.
Si è creato un database singolo usando il database SQL. Si è quindi usato l'editor di query nel portale di Azure per creare le tabelle. Subito dopo è stata usata l'utilità bcp
per caricare dati da una serie di file di dati con valori delimitati da virgole. Sono state infine eseguite query sulle tabelle del database dall'editor di query nel portale di Azure e dall'utilità sqlcmd
in Cloud Shell.