Gå til innhold

Anbefalte innlegg

Hei

 

Har googlet i hele ettermiddag men ikke funnet en løsning på problemet mitt enda.

 

Sitter med en stor tekst fil med data som jeg gjerne skulle hatt som en søkbar database. Dataene i tekstfilen er bygd opp slik:

 

T: RBjgf960510.03 Fnr: FrRB1321 Neg: Mappe139 RD: 0831 Ext: BjBf07712

Mot: Fyrmester Johan og hans andre kone, Kari. Atelierfoto.

Typ: s/k-kopi på kartong Tid: 1920 o Kl:

Emn: person bryllup?

Kom: (Frøy) Tron Krs: Gn: Std:

Fot: Schrøder FoF: FoAd: Trondheim

PA: Pro Prod: Schrøder PrAd: Trondheim

Fra: Håkon Hoff FrF: 1947 FrAd: Haugen, 7000 ***

Inn: 1996.05 LDG: L OrFi: Håkon

Klu: Kopirett: Schrøder.

Hø: 9.8 Br: 5.8 Tlst:

Bsk: "Schrøder / Trondhjem" innprega nede t h på forsida. Liten kartong.

Hnv: Johans første kone: FrRB1320.

Inf: Håkon IFå: 1947 IAd: 7275 Leirv > 7200 ******

Opl: Kari sitter på et bord, Johan på stol. Kari var Johans andre kone, gift ca

1920. Johan var fyrvokter, i 1921 på Ytterholmen fyr i Nordland. Han var

først på Kjeungen fyr, og til slutt i Halten, der han døde i 1938.

 

Det er ca 2000 slike avsnitt i tekstfila og FrRB er filnavnet på bildet som ligger i en annen mappe.

 

Jeg vil gjerne ha disse dataene som en database. Feltnavnene ender med ":"

 

Er dette en smal sak?

Lenke til kommentar
Videoannonse
Annonse

Om du hadde klart å få dataene i en kommaseparert fil (CSV) hadde det vært enkelt med LOAD DATA i sql.

 

Jeg vil tippe det enkleste er å skrive et skript i PHP eller Phyton som skriver dataene til databasen i batch etter å ha lest og parset dem.@

 

Om *ingen* av selve feltene inneholder kolon (:, bare inf: klu: osv) kan du bruke disse til å separere data:

 

I PHP kan du bruke explode, som er ganske rask for dette formålet:

 

$fil = hele filen som en tekststreng.

$delimiter_record = et unikt tegn (feks dobbelt linjeskrift) som separerer postene i filen.

$delimiter_field = et unikt tegn som separerer feltene (:).

$sep_file = explode($delimiter_record, $fil);

foreach ($sep_file as $record) {

$field = explode($delimiter_field, $record);

print_r($field);
echo "<hr/>";

}

 

Da vil hele recorden være oppdelt, så må du bare tilordne deler av arrayet til variabler, feks $t = $field[1] osv.

 

Så kan du lage en spørring i foreachløkken som setter inn dataene etterhvert som de parses.

 

Til det siste spørsmålet: Nei, parsing av ukurante data er ikke en smal sak, jeg ville forsøkt å få dataene i et standardisert format, enten som XML eller CSV.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...