Introduzione a SQL Server 2000 LSA - Laboratorio di Sistemi Informativi Economico-Aziendali Salvatore Ruggieri Dipartimento di Informatica, Università di Pisa
Accesso ai dati su RDBMS 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 login, configurazioni model template di database vuoto msdb scheduling jobs tempdb tabelle temporanee Database di esempio pubs Northwind
Accesso ai dati su RDBMS Lab. Sistemi Informativi Economico-Aziendali Enterprise Manager Creazione database file dati e log tabelle di sistema Creazione/modifica/eliminazione tabelle tipi di dato indici visualizzazione contenuto Creazione/modifica/eliminazione viste Diritti Nome completo tabella: SELECT * FROM lsa.dbo.census SELECT * FROM census SELECT * FROM lsa..census database schema 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
Accesso ai dati su RDBMS Lab. Sistemi Informativi Economico-Aziendali SQL Server > 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 -U -c codifica ASCII -w codifica UNICODE Default: \t come separatore e \n come fine riga oppure -t -r
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 > 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 … Luigi Rossi Mario Bianchi SQL/2003 non è attualmente implementato da SQLServer, DB2, Oracle Esistono però driver JDBC che accettano query SQL/2003 verso tali RDBMS: Data DirectData Direct
Accesso ai dati su RDBMS Lab. Sistemi Informativi Economico-Aziendali SQL Server > 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
PARTE II: ACCESSO A DATI ESTERNI (senza importarli)
Accesso ai dati su RDBMS 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