Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Accesso ai dati su file Localizzazione dei dati File system locali e distribuiti Protocolli di rete: ftp, http, ssh/scp, rcp Rappresentazione dei dati File di testo CSV, FLV, ARFF Accesso ai dati in Java File XML File binari Archivi, Database File compressi
Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali File File = sequenza di bytes …
Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Codifiche caratteri Caratteri = elementi di un alfabeto Codifica da bytes a carattere ASCII, EBCDIC (1 byte per carattere) UNICODE (2/4 bytes per carattere)
Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali ASCII ASCII
Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali File di testo File di testo = sequenza di caratteri CISAO\n …
Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali File di testo: visualizzazione Editor Emacs, TextPad, UltraEdit, Vi, ecc. Carattere di ritorno carrello Visualizzazione Codifica Unix: 1 carattere ASCII(0A) (\n in Java) Windows: 2 car. ASCII(0D 0A) (\r\n in Java) Mac: 1 carattere ASCII(0D) (\r in Java) Conversioni > dos2unix > unix2dos
Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali File di testo File di testo = sequenza di linee CIAO … S
Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Dati tabellari MarioBianchi23Studente LuigiRossi30Operaio AnnaVerdi50Insegnante RosaNeri20Studente RIGA COLONNA
Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali File di testo: dati tabellari Come rappres. una tabella di valori in un file di testo? Comma Separated Values Una riga per linea Gli elementi di una riga separati da un carattere speciale (separatore) ed ordinati in base alla colonna Separatori: virgola (comma), tabulatore, spazio Mario,Bianchi,23,Studente Luigi,Rossi,30,Operaio Anna,Verdi,50,Insegnante Rosa,Neri,20,Studente
Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali File di testo: dati tabellari Come rappres. una tabella di valori in un file di testo? Fixed Length Values Una riga per linea Gli elementi di una riga ordinati in base alla colonna e di lunghezza fissa (in base alla colonna) Accesso diretto alli-esima riga Maggiore occupazione di spazio disco Mario Bianchi 23 Studente Luigi Rossi 30 Operaio Anna Verdi 50 Insegnante Rosa Neri 20 Studente
Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali File di testo: dati tabellari Cosa succede se un elemento contiene il carattere searatore? Errore di interpretazione della riga Soluzione: quoting Delimitare lelemento con caratteri di inizio e fine (es. … ) Mario Bianchi 23 Studente Luigi Rossi 30 Operaio Anna Verdi 50 Insegnante Rosa Neri 20 Studente Mario Bianchi 23 Studente Luigi Rossi 30 Operaio Anna Verdi 50 Insegnante Rosa Neri 20 Studente
Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali File di testo: dati tabellari Cosa rappresentare lassenza di un elemento? Equivalente di NULL nelle basi di dati Soluzione: missing value Un elemento riservato: ?, null, Mario Bianchi 23 Studente Luigi Rossi 30 ? Anna Verdi 50 Insegnante Rosa Neri ? Studente
Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Esempio Import di file CSV / FLV in Excel
Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Dati tabellari: meta-dati nomecognomeetaprofessione stringstringintstring MarioBianchi23Studente LuigiRossi30Operaio AnnaVerdi50Insegnante RosaNeri20Studente Descrivono proprietà dei dati Nome colonne Tipo degli elementi (rispetto ad un insieme di tipi disponibile)
Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Dati tabellari: meta-dati Insieme di tipi SQL standard INTEGER o INT intero a 32 bit SMALLINT intero a 16 bit REAL numero a virgola mobile a 32 bit DOUBLE numero a virgola mobile a 64 bit NUMERIC(m,n), DECIMAL(m,n) o DEC(m,n) numero decimale con m cifre totali e n dopo la virgola FLOAT(n) numero a virgola mobile con n cifre binarie di precisione
Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Dati tabellari: meta-dati Insieme di tipi SQL standard CHARACTER(n) o CHAR(n) stringa di lunghezza fissa n VARCHAR(n) stringa di lunghezza variabile, con lunghezza massima n BOOLEAN booleano DATE data TIME ora TIMESTAMP data e ora
Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Dati tabellari: meta-dati Insieme di tipi ARFF (Attribute-Relation File Format) real / integer/ numeric sono sinonimi e coprono i tipi numerici string copre varchar[n], per qualsiasi n { nome-1, …, nome-n } tipi enumerated coprono enumerazione di valori Es., {alto, medio, basso} {Play, Dont Play} date tipo data
Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali File di testo: meta-dati nomecognomeetaprofessione stringstringintstring Come rappres. meta-dati in un file di testo? Come una tabella con due righe, una con i nomi e laltra con i tipi. nome,cognome,eta,professione string,string,int,string
Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali File di testo: meta-dati nomecognomeetaprofessione stringstringintstring Come rappres. meta-dati in un file di testo? Come una tabella con colonne nome e tiponometipo nomestring cognomestring etaint professionestring nome,string cognome,string eta,int professione,string
Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali File di testo: meta-dati nomecognomeetaprofessione stringstringintstring MarioBianchi23Studente LuigiRossi30Operaio AnnaVerdi50Insegnante RosaNeri20Studente Come rappres. dati e meta-dati in un file di testo? Due file distinti Ognuno con una sua rappresentazione (CSV, FLV) Mario,Bianchi,23,Studente Luigi,Rossi,30,Operaio Anna,Verdi,50,Insegnante Rosa,Neri,20,Studente nome,string cognome,string eta,int professione,string
Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali File di testo: meta-dati nomecognomeetaprofessione stringstringintstring MarioBianchi23Studente LuigiRossi30Operaio AnnaVerdi50Insegnante RosaNeri20Studente Come rappres. dati e meta-dati in un file di testo? Un unico file Metadati sulle prime due righe Dati sulle restanti righe nome,cognome,eta,professione string,string,int,string Mario,Bianchi,23,Studente Luigi,Rossi,30,Operaio Anna,Verdi,50,Insegnante Rosa,Neri,20,Studente
Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali File di testo: meta-dati nomecognomeetaprofessione stringstringintstring MarioBianchi23Studente LuigiRossi30Operaio AnnaVerdi50Insegnante RosaNeri20Studente Come rappres. dati e meta-dati in un file di testo? Un unico file Dati e metadati distinti da una riga separatrice nome,string cognome,string eta,int Mario,Bianchi,23,Studente Luigi,Rossi,30,Operaio Anna,Verdi,50,Insegnante Rosa,Neri,20,Studente
Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Attribute-Relation File Format tabella % nome cognome eta professione string % Mario,Bianchi,23,Studente Luigi,Rossi,?,Operaio Anna,Verdi,50,Dottorando di ricerca Rosa,Neri,20,Studente Nome della tabella Linea di commento Nome e tipo colonna Inizio dati Missing value Quoting
Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Accesso ai dati su file Localizzazione dei dati File system locali e distribuiti Protocolli di rete: ftp, http, ssh/scp, rcp Rappresentazione dei dati File di testo CSV, FLV, ARFF Accesso ai dati in Java File XML File binari Archivi, Database File compressi
Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Accesso ai file in Java - apertura import java.io.*; public static void main(String[] args) { try { BufferedReader input = new BufferedReader( new InputStreamReader( new FileInputStream( args[1] ))); doSomething( input ); input.close(); } catch(IOException e) { … }
Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Accesso ai file in Java -- scan public static int countRows(BufferedReader in) throws IOException { String line; int rows = 0; while( ( line = in.readLine() ) != null ) { rows++; } return rows; }
Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Esempio con IOUtil.java
Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Esercitazione: FORMATO 1. Scrivere un programma (Java) che dato un file CSV produce il corrispondente ARFF. 2. Discutere cosa cambia in (1) assumendo come insieme di tipi lSQL standard.
Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Esercitazione: SINTASSI 1. Scrivere un programma (Java) che dato un file ARFF produce le linee di dati inconsistenti con i metadati. Suggerimento: anzitutto, definire in modo chiaro cosa significa inconsistenti (es., contenenti un valore Mario in un attributo numeric).
Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Esercitazione: ITERAZIONE 1. Scrivere una classe Java che permetta di scorrere (nello stile di iteratori) una generica tabella ARFF. La classe ha almeno i seguenti metodi: bool open( String arffFileName ) per specificare il file ARFF; bool next() per leggere una ulteriore riga, ritorna false se non esistente; String getString(String attributeName) per leggere il valore dellattributo attributeName (di tipo string) della corrente riga; double getDouble(String attributeName) per leggere il valore dellattributo attributeName (di tipo numeric) della corrente riga. 2. Scrivere una classe di test della classe in (1).
Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Esercitazione: RAPPRESENTAZIONE 1. Scrivere una classe (Java) per rappresentare in memoria una tabella ARFF. La classe deve : permettere laccesso diretto ad un generico elemento della tabella, permettere laccesso diretto ad un generico attributo della tabella, rappresentare gli attributi in modo efficiente (ad esempio, non usare oggetti String per rappresentare attributi numerici).