Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
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