Filemaker Ankreuzfelder

Hallo Forum :slight_smile: ,

ich importiere gerade Daten aus einer Filemaker Datenbank in eine Postgresql Datenbank. Dabei habe ich ein Problem, das mit den Ankreuzfeldern der Filemaker Datenbank auftritt.

Das Importieren funktioniert über CSV problemlos. Jedoch speichert Filemaker die angekreuzten Werte eines Ankreuzfeldes in einem einzigen Feld, die Werte werden durch ein Steuerzeichen, genauer einem Zeilenumbruch, getrennt.

Beispielhafterweise habe ich: (x)=angekreuzt

(x) eins
(x) zwei
( ) drei
(x) vier

aus Filemaker wird nachher in Postgresql “eins zwei vier” in einem Feld.

Nun hätte ich gerne für jeden angekreuzten Wert einen neuen Datensatz in Postgresql, mit jeweils eins, zwei und vier als einzigen Wert im “Ankreuzfeld” (das ja nun keins mehr ist).

Mir ist leider nicht ganz klar, ob sich dieses Problem in Postgresql lösen lässt, oder ob ich da mit einer Programmiersprache ran muss. Meinem Verständnis nach müsste man ja über die einzelnen Substrings (Zeilenumbruch als Trennzeichen) im Feld iterieren und als neue Datensätze einfügen. Geht das direkt im SQL oder kann man das mit Funktionen erledigen oder führt der Weg nur über eine Programmiersprache wie PHP (oder eine beliebige andere)?

Wenn mir da jemand einen Schubs in die richtige Richtung geben könnte, wäre ich sehr dankbar.

Vielen Dank

Frank

Was für ein Datentyp ist das in der Quell-DB, was willst Du in der Ziel-DB haben? Möglicherweise wirst Du den Dump mit einem Tool Deines geringsten Mißtrauens (perl, awk, sed, …) bearbeiten müssen.

Andreas

Das Feld ist vom Typ Text, bezieht seine Werte aus einer Liste und diese Liste wird im Formular als Ankreuzfeld visualisiert. Daraus resultiert, dass mehrere Werte in diesem Textfeld stehen können, die jeweils durch ein Steuerzeichen getrennt sind.

Ich hab gestern auch nicht mehr allzulange nach einer reinen SQL Lösung gesucht, sondern hab schnell ein PHP Skript geschrieben, das mir mein gewünschtes Resultat bringt.

Gewünschtes Resultat ist, pro angekreuztem Wert (also pro Wert aus der Liste) in dem Textfeld den Datensatz zu duplizieren und in das Ankreuz-Textfeld jeweils jeden Wert einzeln zu haben. Klar? Irgendwie ist das was schwierig zu beschreiben, vor allem um die Uhrzeit :smiley:

Nunja, ich habs ja nun gelöst, aber eine weitere (reine SQL) Vorgehensweise hätte mich noch interessiert. Man lernt ja nie aus :slight_smile: