Presentazione di PowerPoint
Download
Report
Transcript Presentazione di PowerPoint
Introduzione a SQL Server 2000
LSA - Laboratorio di Sistemi Informativi
Economico-Aziendali
Salvatore Ruggieri
Dipartimento di Informatica, Università di Pisa
Lab. Sistemi Informativi Economico-Aziendali
SQL Server 2000:
History
Riconducibile al 1987 Sybase (Aston-Tate)
Versioni: personal, standard, enterprise
Prossima release: SQL Server codename Yukon (2a metà 2004)
Data Definition/Manipulation/Control Language
T-SQL (Transact SQL)
Tabelle, Viste, Indici, Vincoli, Regole
Trigger, Stored Procedures, User-defined functions
Tool di amministrazione
Query analyzer
Enterprise manager
Books on line
Service Manager
SQL profiler
Distributed transaction coordinator
Accesso ai dati su RDBMS
Lab. Sistemi Informativi Economico-Aziendali
Query Analyser
Client per definizione ed esecuzione di query SQL
Accesso ai dati su RDBMS
Lab. Sistemi Informativi Economico-Aziendali
Books online
Manuali strumenti, SQL, librerie
Accesso ai dati su RDBMS
Lab. Sistemi Informativi Economico-Aziendali
Enterprise Manager
Client di amministrazione
Accesso ai dati su RDBMS
Lab. Sistemi Informativi Economico-Aziendali
Enterprise Manager
Registrazione server
autenticazione trusted e SQL Server
Database di sistema
master
model
scheduling jobs
tempdb
template di database vuoto
msdb
login, configurazioni
tabelle temporanee
Database di esempio
pubs
Northwind
Accesso ai dati su RDBMS
Lab. Sistemi Informativi Economico-Aziendali
Enterprise Manager
Creazione database
Creazione/modifica/eliminazione tabelle
file dati e log
tabelle di sistema
tipi di dato
indici
visualizzazione contenuto
Creazione/modifica/eliminazione viste
database
Diritti
Nome completo tabella:
schema
SELECT * FROM lsa.dbo.census
SELECT * FROM census
SELECT * FROM lsa..census
Accesso ai dati su RDBMS
tabella
Accesso ai dati: SQL Server 2000,
CSV, XML e altri RDBMS
LSA - Laboratorio di Sistemi Informativi
Economico-Aziendali
Salvatore Ruggieri
Dipartimento di Informatica, Università di Pisa
PARTE I: IMPORT / EXPORT
Lab. Sistemi Informativi Economico-Aziendali
SQL Server 2000 -> CSV
Potremmo farlo usando JDBC
Utility da linea di comando:
bcp (Bulk Copy)
Export
bcp “select * from census..selezione”
queryout outputfile.csv –S
tera.di.unipi.it –U ruggieri –c –t,
queryout, direzione dei dati da query SQL a file di
output
-S <server_name>
-U <user_name>
-c codifica ASCII
-w codifica UNICODE
Default: \t come separatore e \n come fine riga
oppure -t <separatore> -r<fine_riga>
Accesso ai dati su RDBMS
Lab. Sistemi Informativi Economico-Aziendali
CSV -> SQL Server 2000
Utility bcp
Import
bcp census..selezione2 in inputfile.csv –S
tera.di.unipi.it –U ruggieri –c –t,
Estensione SQL
BULK INSERT census..Selezione2
FROM 'f:\census\selection.csv'
WITH (FIELDTERMINATOR = ‘,',
ROWTERMINATOR = '|\n' )
'f:\census\selection.csv‘ riferisce un file del server
Limiti in espressività e generalità
Formati, gestione errori, trasformazioni
Accesso ai dati su RDBMS
Lab. Sistemi Informativi Economico-Aziendali
CSV, RDBMS <-> SQL Server 2000
Soluzione generale
Enterprise Manager -> Database -> All
Tasks -> Import / Export Data
Wizard di import export da/verso file di testo o
altri database
Esempio di export/import verso file di testo
mapping del nome delle colonne
Esempio di export/import verso altri RDBMS
creazione delle tabelle se non esistenti
Accesso ai dati su RDBMS
Lab. Sistemi Informativi Economico-Aziendali
Esercitazione: TRANSCODIFICA
1. Su un file Excel è presente una tabella con, tra le
altre, una colonna “marital-status” (stato civile). Si
vuole importare tale tabella in SQL server.
2. Creare una tabella SQLServer di traduzione da
Inglese a Italiano dei possibili stati civili.
3. Aggiornare la colonna “marital-status” con la
versione italiana della descrizione dello stato civile.
Accesso ai dati su RDBMS
Lab. Sistemi Informativi Economico-Aziendali
SQL Server 2000 -> XML
Potremmo farlo usando JDBC
Potremmo farlo grazie allo standard di SQL/2003 che prevede
costrutti per generare XML:
SELECT XMLELEMENT(Name “root”,
XMLAGG(
XMLELEMENT(Name “emp”, name)
ORDER BY name ) )
FROM employees
…
<root>
<emp>Luigi Rossi</emp>
<emp>Mario Bianchi</emp>
</root>
SQL/2003 non è attualmente implementato da SQLServer, DB2,
Oracle
Esistono però driver JDBC che accettano query SQL/2003 verso
tali RDBMS: Data Direct
Accesso ai dati su RDBMS
Lab. Sistemi Informativi Economico-Aziendali
SQL Server 2000 -> XML (ROW)
Cosa offre SQL Server 2000?
SELECT … FOR XML RAW
SELECT name As nome, eta
FROM employees
FOR XML RAW
Produce XML in formato ROW (senza root)
colonne come attributi
<row nome=“Luigi Rossi” eta=“30”/>
<row nome=“Mario Bianchi” eta=“40”/>
Accesso ai dati su RDBMS
PARTE II: ACCESSO A DATI ESTERNI
(senza importarli)
Lab. Sistemi Informativi Economico-Aziendali
Access -> SQL Server 2000
OPENROWSET
SELECT *
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'D:\Corso_LSA\L2\src\Nwind.mdb';'admin';'',
'select * from clienti')
'Microsoft.Jet.OLEDB.4.0', provider OLE DB
per Access
'D:\Corso_LSA\L2\src\Nwind.mdb';'admin';
'‘, file Access con utente e password
il file risiede sul SERVER o il path è in formato UNC
'select * from clienti' query SQL per ottenere
il rowset
Accesso ai dati su RDBMS
Lab. Sistemi Informativi Economico-Aziendali
ODBC -> SQL Server 2000
SELECT *
FROM OPENROWSET('MSDASQL',
'FoodMart 2000';'Admin';'',
'select * from customer')
'MSDASQL', provider OLE DB per ODBC
‘FoodMart 2000’;'admin';'‘, DSN di
sistema con utente e password
'select * from customer' query SQL
per ottenere il rowset
Accesso ai dati su RDBMS
Lab. Sistemi Informativi Economico-Aziendali
ODBC -> SQL Server 2000
SELECT *
FROM OPENROWSET('MSDASQL',
‘DRIVER=Microsoft Access Driver
(*.mdb);UID=admin;DBQ=D:\Corso_LS
A\L2\src\Nwind.mdb',
'select * from clienti')
‘DRIVER=Microsoft Access Driver
(*.mdb);UID=admin;DBQ=D:\Corso_LSA\
L2\src\Nwind.mdb' stringa di connessione
ODBC
Accesso ai dati su RDBMS
Lab. Sistemi Informativi Economico-Aziendali
Linked Servers
SQL Server accetta query SQL
con riferimenti a database
accessibili via OLE DB
SELECT A.name, B.address
FROM
sales.dbo.transactions A,
db2..owner.addresses B
WHERE A.name = B.name
Accesso ai dati su RDBMS
Lab. Sistemi Informativi Economico-Aziendali
Linked Servers
Accesso ai dati su RDBMS