accesso ai dati su file lab. sistemi informativi economico-aziendali accesso ai dati su file...
Post on 01-May-2015
218 Views
Preview:
TRANSCRIPT
Lab. Sistemi Informativi Economico-Aziendali
Accesso ai dati su file
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
Lab. Sistemi Informativi Economico-Aziendali
Accesso ai dati su file
File
File = sequenza di bytes
67 73 8365 79 10 10 …
Lab. Sistemi Informativi Economico-Aziendali
Accesso ai dati su file
Codifiche caratteri
Caratteri = elementi di un alfabeto Codifica da bytes a carattere ASCII, EBCDIC (1 byte per carattere) UNICODE (2/4 bytes per carattere)
Lab. Sistemi Informativi Economico-Aziendali
Accesso ai dati su file
ASCII
Lab. Sistemi Informativi Economico-Aziendali
Accesso ai dati su file
File di testo
File di testo = sequenza di caratteri
C I SA O \n \n …
Lab. Sistemi Informativi Economico-Aziendali
Accesso ai dati su file
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
Lab. Sistemi Informativi Economico-Aziendali
Accesso ai dati su file
File di testo
File di testo = sequenza di linee
C I A O
…
S
Lab. Sistemi Informativi Economico-Aziendali
Accesso ai dati su file
Dati tabellari
Mario Bianchi 23 Studente
Luigi Rossi 30 Operaio
Anna Verdi 50 Insegnante
Rosa Neri 20 Studente
RIGA
COLONNA
Lab. Sistemi Informativi Economico-Aziendali
Accesso ai dati su file
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, spazioMario,Bianchi,23,Studente
Luigi,Rossi,30,Operaio
Anna,Verdi,50,Insegnante
Rosa,Neri,20,Studente
Lab. Sistemi Informativi Economico-Aziendali
Accesso ai dati su file
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 all’i-esima riga Maggiore occupazione di spazio disco
Mario Bianchi 23 Studente
Luigi Rossi 30 Operaio
Anna Verdi 50 Insegnante
Rosa Neri 20 Studente
Lab. Sistemi Informativi Economico-Aziendali
Accesso ai dati su file
File di testo: dati tabellari
Cosa succede se un elemento contiene il carattere searatore?
Errore di interpretazione della riga
Soluzione: quoting Delimitare l’elemento 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
Lab. Sistemi Informativi Economico-Aziendali
Accesso ai dati su file
File di testo: dati tabellari
Cosa rappresentare l’assenza 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
Lab. Sistemi Informativi Economico-Aziendali
Accesso ai dati su file
Esempio
Import di file CSV / FLV in Excel
Lab. Sistemi Informativi Economico-Aziendali
Accesso ai dati su file
Dati tabellari: meta-dati
nomenome cognomcognomee
eta’eta’ professionprofessionee
stringstring stringstring intint stringstring
Mario Bianchi 23 Studente
Luigi Rossi 30 Operaio
Anna Verdi 50 Insegnante
Rosa Neri 20 Studente
Descrivono proprietà dei dati
Nome colonne Tipo degli elementi (rispetto ad un insieme di tipi
disponibile)
Lab. Sistemi Informativi Economico-Aziendali
Accesso ai dati su file
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
Lab. Sistemi Informativi Economico-Aziendali
Accesso ai dati su file
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
Lab. Sistemi Informativi Economico-Aziendali
Accesso ai dati su file
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, Don’t Play}
date tipo data
Lab. Sistemi Informativi Economico-Aziendali
Accesso ai dati su file
File di testo: meta-dati
nomenome cognomecognome eta’eta’ professioneprofessione
stringstring stringstring intint stringstring
Come rappres. meta-dati in un file di testo?
Come una tabella con due righe, una con i nomi e l’altra con i tipi.
nome,cognome,eta’,professione
string,string,int,string
Lab. Sistemi Informativi Economico-Aziendali
Accesso ai dati su file
File di testo: meta-dati
nomenome cognomecognome eta’eta’ professioneprofessione
stringstring stringstring intint stringstring
Come rappres. meta-dati in un file di testo?
Come una tabella con colonne “nome” e “tipo”
nomenome tipotipo
nome string
cognome string
eta’ int
professione
string
nome,string
cognome,string
eta’,int
professione,string
Lab. Sistemi Informativi Economico-Aziendali
Accesso ai dati su file
File di testo: meta-dati
nomenome cognomecognome eta’eta’ professioneprofessione
stringstring stringstring intint stringstring
Mario Bianchi 23 Studente
Luigi Rossi 30 Operaio
Anna Verdi 50 Insegnante
Rosa Neri 20 Studente
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
Lab. Sistemi Informativi Economico-Aziendali
Accesso ai dati su file
File di testo: meta-dati
nomenome cognomecognome eta’eta’ professioneprofessione
stringstring stringstring intint stringstring
Mario Bianchi 23 Studente
Luigi Rossi 30 Operaio
Anna Verdi 50 Insegnante
Rosa Neri 20 Studente
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
Lab. Sistemi Informativi Economico-Aziendali
Accesso ai dati su file
File di testo: meta-dati
nomenome cognomecognome eta’eta’ professioneprofessione
stringstring stringstring intint stringstring
Mario Bianchi 23 Studente
Luigi Rossi 30 Operaio
Anna Verdi 50 Insegnante
Rosa Neri 20 Studente
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
professione,string
@data
Mario,Bianchi,23,Studente
Luigi,Rossi,30,Operaio
Anna,Verdi,50,Insegnante
Rosa,Neri,20,Studente
Lab. Sistemi Informativi Economico-Aziendali
Accesso ai dati su file
Attribute-Relation File Format (ARFF)
@relation tabella
% commento
@attribute nome string
@attribute cognome string
@attribute eta’ int
@attribute professione string
% commento
@data
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
Lab. Sistemi Informativi Economico-Aziendali
Accesso ai dati su file
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
Lab. Sistemi Informativi Economico-Aziendali
Accesso ai dati su file
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) {
… }
}
Lab. Sistemi Informativi Economico-Aziendali
Accesso ai dati su file
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;}
Lab. Sistemi Informativi Economico-Aziendali
Accesso ai dati su file
Esempio
con IOUtil.java
Lab. Sistemi Informativi Economico-Aziendali
Accesso ai dati su file
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 l’SQL standard.
Lab. Sistemi Informativi Economico-Aziendali
Accesso ai dati su file
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”).
Lab. Sistemi Informativi Economico-Aziendali
Accesso ai dati su file
Esercitazione: ITERAZIONE1. 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 dell’attributo attributeName (di tipo string) della corrente riga;
double getDouble(String attributeName) per leggere il valore dell’attributo attributeName (di tipo numeric) della corrente riga.
2. Scrivere una classe di test della classe in (1).
Lab. Sistemi Informativi Economico-Aziendali
Accesso ai dati su file
Esercitazione: RAPPRESENTAZIONE
1. Scrivere una classe (Java) per rappresentare in memoria una tabella ARFF. La classe deve :
permettere l’accesso diretto ad un generico elemento della tabella,
permettere l’accesso diretto ad un generico attributo della tabella,
rappresentare gli attributi in modo efficiente (ad esempio, non usare oggetti String per rappresentare attributi numerici).
top related