ponca: Zwei csv-Dateien vereinigen

Hallo Community!

Ich soll fortan regelmäßig Daten aus einer Datenbank in die einer anderen einpflegen. Beides sind Mitgliedsdatenbanken und beinhalten Personendaten. Diese Daten liegen mir aus beiden Datenbanken als .csv-Dateien vor. Problem ist, dass sie aus zwei unterschiedlichen Datenbanken stammen und daher nicht die gleichen Spalten haben und auch nicht in der gleichen Art und Weise gespeichert werden. Damit das anschaulicher wird, hier mal Auszüge aus den Original-csv-Dateien, allerdings verfremdet:

Datei1.csv:
-----------------------------------------------------------------------
"mitgliedsnr";"name";"geburtsname";"vorname";"titel";"strasse";"hausnr"
"100000";"Müller";"Meier";"Anglika";"Dr.";"Vogelweg";"24 c"
"100001";"Schulze";"";"Hubert";"Dr.";"Säugetierstr.";"26"
-----------------------------------------------------------------------

Datei2.csv:
-----------------------------------------------------------------------
STAMMNUMMER;NAME;TITEL;VORNAME;GEBURTSDATUM;STRASSE
100001;Schulze;;Hubert;01.01.1900;Säugetierstr. 26
100002;Richter;;Alexander;01.01.1979;Reptilweg 7
-----------------------------------------------------------------------

Die Daten aus „Datei1.csv“ sollen in „Datei2.csv“ eingelesen werden, allerdings nur die Spalten „Mitgliedsnummer“/“Stammnummer“, „Nachname“/„Name“, „Vorname“.

Nun könnte ich einfach beide Tabellen in Excel öffnen und die gewünschten Inhalte aus Datei1 ans Ende von Datei2 kopieren. Dabei gibt es aber mehrere Probleme:
1. Gibt es viele redundante Daten. Die, die schon in Datei2 vorliegen sollten also am besten gar nicht erst aus Datei1 kopiert werden.
2. Wenn das erste Problem gelöst ist und alle Daten in einer Datei vorliegen, muss diese wieder als csv gespeichert werden und zwar mit genau den Separatoren, die auch vorher schon genutzt wurden. In Datei2 wäre das also ein Semikolon, wobei zu beachten ist, dass die einzelnen Zellinhalte nicht durch Anführungszeichen umgeben sein sollen (wie dies in Datei1 der Fall ist).

Wie und womit würde man denn am besten so ein Problem angehen? Und zwar möglichst so, dass eine Lösung bei raus kommt, die auch jemand anders bedienen kann, der kein spezielles Programm (Excel wäre noch OK, hat ja fast jeder) oder spezielle Programierkenntnisse hat?

Mit besten Grüßen,
ponca

  1. Hallo

    Ich soll fortan regelmäßig Daten aus einer Datenbank in die einer anderen einpflegen.

    Die Daten aus „Datei1.csv“ sollen in „Datei2.csv“ eingelesen werden,

    Bitte werde dir erstmal klar, was deine Aufgabe ist. Willst du auf den Datenbanken arbeiten oder dich mit zwei Textdateien vergnügen?

    LG, Kalle

    1. Bitte werde dir erstmal klar, was deine Aufgabe ist. Willst du auf den Datenbanken arbeiten oder dich mit zwei Textdateien vergnügen?

      Hallo Kalle,

      ich hatte doch schon geschrieben, dass ich die Daten als csv-Dateien vorliegen habe. Ich muss also mit den Textdateien arbeiten und nicht mit den Datenbanken selbst. Das ist von daher sehr vorteilhaft, dass es sich um zwei komplett verschiedene Datenbanktypen handelt. Aber wie auch immer, ich hab nur die csvs nach obigem Beispiel. Kann mir da jemand was zu sagen?

      Gruß,
      ponca

      1. ... Ich muss also mit den Textdateien arbeiten und nicht mit den Datenbanken selbst. Das ist von daher sehr vorteilhaft, dass es sich um zwei komplett verschiedene Datenbanktypen handelt. Aber wie auch immer, ich hab nur die csvs nach obigem Beispiel. Kann mir da jemand was zu sagen?

        Die Schwierigkeit liegt darin, dass sie jeder User eigentlich diese Zusammenführung leicht bewerkstelligen können sollte.
        Das beinhaltet, dass dieser User die CSVs nicht selbst analysieren muss.

        Das ergibt dann eine Anwendung in drei Stufen

        Voraussetzung ist ein Formular, in welchem der User die Pfade zu den zwei zu mergenden Files angibt.

        Die Files werden geladen und analysiert.
        Dabei werden bei jedem File die FeldTitel ermittelt.
        Es wird ein Schlüsselfeld ermittelt und vorgeschlagen.

        Im zweiten Schritt dann schreibt der Üser die Schlüsselfelder in eine Textarea, und zwar die gewünschten
        (Java-Script Unterstützung?)

        Neues File   File1       File2
        KEY          Schlüssel   KEY
        Nachname     Namen       Name
        Vorname      Vorname     Prename
        ...
        ...

        Wichtig ist dann eine Entscheidung,
        Wenn der Schlüssel File1 identitisch ist zu Schlüssel File2
        Priorität der Schlüssel
        Neue Schlüssel Generierung.

        Wenn's simpel und dirty sein darf hätt' ich das schnell mit einem Perl-Hash gemacht. Aber deine Anforderung ist es , die dir ein sauberes Prozedere mit GUI abverlangt.

        Sonst sage ich nur noch Test, Test, Test...

        mfg Beat

        --
        Selber klauen ist schöner!