Flat file -> relationeel conversie

Pagina: 1
Acties:

  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 28-03 23:19
Ik ben bezig om een database die in drie flat files zit (FoxPro) om te zetten naar MySQL. Ik heb de databasestructuur voor de nieuwe software zo opgezet dat ik eigenlijk geen rekening heb gehouden met de oude database maar wel met de oude functionaliteit. Dus velden komen wel met elkaar overeen, maar alles is veel verder genormaliseerd.

Ik kan natuurlijk alles met de hand gaan doen.....maar daar ben ik te lui efficient voor ingesteld natuurlijk O-)

Die FoxPro bestanden (drie per database) kan ik naar standaard formaten als csv, excel, etc krijgen, dat is het probleem verder niet. Maar ik moet een omschrijving als 01-05 in de kolom 'maand' omzetten naar een key die naar een andere tabel verwijst omzetten.

iOS developer


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 20:57

mulder

ik spuug op het trottoir

En nu wil je dat...?

oogjes open, snaveltjes dicht


Verwijderd

Nu wil ie dat dat automatisch omgezet wordt. Maar ik snap niet helemaal wat voor key je nu wil invullen bij die 01-05? Waar verwijst die naar dan?

  • Vozze
  • Registratie: December 2001
  • Laatst online: 22:18
Verwijderd schreef op woensdag 08 februari 2006 @ 09:18:
Nu wil ie dat dat automatisch omgezet wordt. Maar ik snap niet helemaal wat voor key je nu wil invullen bij die 01-05? Waar verwijst die naar dan?
Naar de primary key in de datum tabel ofzo.
Als je de beschikking heb over een ETL-tool zoals Data Integrator of Oracle Warehouse Builder, is dit makkelijk te doen. Met een lookup kun je dit dan realiseren. Maar is een beetje overkill voor dit. Andere tool zou ik zo 1,2,3 niet weten. Met een beetje SQL moet het ook te doen zijn. Eerst files in tijdelijke tabel stoppen en dan de bijbehorende key opzoeken m.b.v. SQL.

[ Voor 25% gewijzigd door Vozze op 08-02-2006 09:22 ]

"He who thinks knows evertyhing, knows nothing" - Socrates


  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 28-03 23:19
Vozze schreef op woensdag 08 februari 2006 @ 09:19:
[...]

Naar de primary key in de datum tabel ofzo.
Als je de beschikking heb over een ETL-tool zoals Data Integrator of Oracle Warehouse Builder, is dit makkelijk te doen. Met een lookup kun je dit dan realiseren. Maar is een beetje overkill voor dit. Andere tool zou ik zo 1,2,3 niet weten. Met een beetje SQL moet het ook te doen zijn. Eerst files in tijdelijke tabel stoppen en dan de bijbehorende key opzoeken m.b.v. SQL.
Precies, het gaat er om dat bepaalde waardes uit die min of meer flat file database keys worden die naar die waardes vergelijken. Zo is er bvb een database met adresgegevens, en een database met adverteerders, die daar aan gekoppeld is, maar wel met zijn eigen key gekoppeld wordt aan de advertenties die geplaatst zijn, etc.

Dus de csv bestanden moeten eigenlijk omgezet worden bijvoorbeeld naar SQL-bestanden die al genormaliseerd en gekoppeld zijn.

iOS developer


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 11-04 03:15
Automatisch is het niet te doen.

Ik zou eerst een paar tijdelijke tabellen maken die nauw overeenkomen met de tekstbestanden die je hebt - die kun je dan zonder moeite importeren van uit csv neem ik aan. Vervolgens kun je je nieuwe schema met een paar slimme queries vullen met de data uit de oude tabel.

Bijvoorbeeld, je hebt een bestand met kolommen Naam, Bedrijf, Postadres (voor je contactpersonen ofzo) en in je nieuwe bestand wil je bedrijven met adressen scheiden van contactpersonen. Dan kun je de boel converteren met queries als:
SQL:
1
2
3
4
5
6
SELECT DISTINCT Bedrijf, Postadres
    INTO Bedrijven FROM Oud

SELECT Naam, Bedrijf.Id AS BedrijfId
    INTO Contactpersonen FROM Oud, Bedrijven
    WHERE Oud.Bedrijf = Bedrijven.Bedrijf AND Oud.Postadres = Bedrijven.PostAdres


Dingen samenvoegen gaat op dezelfde manier natuurlijk. Simpele conversies tussen datatypes zijn bovendien ook nog wel in SQL te doen. Enums enzo zijn het makkelijkste met de hand te doen.

  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 28-03 23:19
Goed, de eerste conversie lijkt redelijk gelukt te zijn. Nu rest mij slechts nog de taak om de gene die de grote bubs handmatig mag gaan doen even uit te leggen hoe het werkt >:)

iOS developer

Pagina: 1