Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Accesso ai dati su file...

31
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

Transcript of Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Accesso ai dati su file...

Page 1: Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Accesso ai dati su file Localizzazione dei dati File system locali e distribuiti Protocolli.

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

Page 2: Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Accesso ai dati su file Localizzazione dei dati File system locali e distribuiti Protocolli.

Lab. Sistemi Informativi Economico-Aziendali

Accesso ai dati su file

File

File = sequenza di bytes

67 73 8365 79 10 10 …

Page 3: Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Accesso ai dati su file Localizzazione dei dati File system locali e distribuiti Protocolli.

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)

Page 4: Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Accesso ai dati su file Localizzazione dei dati File system locali e distribuiti Protocolli.

Lab. Sistemi Informativi Economico-Aziendali

Accesso ai dati su file

ASCII

Page 5: Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Accesso ai dati su file Localizzazione dei dati File system locali e distribuiti Protocolli.

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 …

Page 6: Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Accesso ai dati su file Localizzazione dei dati File system locali e distribuiti Protocolli.

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

Page 7: Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Accesso ai dati su file Localizzazione dei dati File system locali e distribuiti Protocolli.

Lab. Sistemi Informativi Economico-Aziendali

Accesso ai dati su file

File di testo

File di testo = sequenza di linee

C I A O

S

Page 8: Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Accesso ai dati su file Localizzazione dei dati File system locali e distribuiti Protocolli.

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

Page 9: Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Accesso ai dati su file Localizzazione dei dati File system locali e distribuiti Protocolli.

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

Page 10: Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Accesso ai dati su file Localizzazione dei dati File system locali e distribuiti Protocolli.

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

Page 11: Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Accesso ai dati su file Localizzazione dei dati File system locali e distribuiti Protocolli.

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

Page 12: Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Accesso ai dati su file Localizzazione dei dati File system locali e distribuiti Protocolli.

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

Page 13: Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Accesso ai dati su file Localizzazione dei dati File system locali e distribuiti Protocolli.

Lab. Sistemi Informativi Economico-Aziendali

Accesso ai dati su file

Esempio

Import di file CSV / FLV in Excel

Page 14: Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Accesso ai dati su file Localizzazione dei dati File system locali e distribuiti Protocolli.

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)

Page 15: Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Accesso ai dati su file Localizzazione dei dati File system locali e distribuiti Protocolli.

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

Page 16: Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Accesso ai dati su file Localizzazione dei dati File system locali e distribuiti Protocolli.

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

Page 17: Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Accesso ai dati su file Localizzazione dei dati File system locali e distribuiti Protocolli.

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

Page 18: Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Accesso ai dati su file Localizzazione dei dati File system locali e distribuiti Protocolli.

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

Page 19: Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Accesso ai dati su file Localizzazione dei dati File system locali e distribuiti Protocolli.

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

Page 20: Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Accesso ai dati su file Localizzazione dei dati File system locali e distribuiti Protocolli.

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

Page 21: Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Accesso ai dati su file Localizzazione dei dati File system locali e distribuiti Protocolli.

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

Page 22: Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Accesso ai dati su file Localizzazione dei dati File system locali e distribuiti Protocolli.

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

Page 23: Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Accesso ai dati su file Localizzazione dei dati File system locali e distribuiti Protocolli.

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

Page 24: Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Accesso ai dati su file Localizzazione dei dati File system locali e distribuiti Protocolli.

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

Page 25: Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Accesso ai dati su file Localizzazione dei dati File system locali e distribuiti Protocolli.

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) {

… }

}

Page 26: Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Accesso ai dati su file Localizzazione dei dati File system locali e distribuiti Protocolli.

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;}

Page 27: Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Accesso ai dati su file Localizzazione dei dati File system locali e distribuiti Protocolli.

Lab. Sistemi Informativi Economico-Aziendali

Accesso ai dati su file

Esempio

con IOUtil.java

Page 28: Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Accesso ai dati su file Localizzazione dei dati File system locali e distribuiti Protocolli.

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.

Page 29: Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Accesso ai dati su file Localizzazione dei dati File system locali e distribuiti Protocolli.

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”).

Page 30: Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Accesso ai dati su file Localizzazione dei dati File system locali e distribuiti Protocolli.

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).

Page 31: Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Accesso ai dati su file Localizzazione dei dati File system locali e distribuiti Protocolli.

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).