-stian- Skrevet 13. september 2008 Del Skrevet 13. september 2008 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: BjBf07712Mot: 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
mathias123 Skrevet 14. september 2008 Del Skrevet 14. september 2008 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå