Postgree Upsize dbf->sql [ERLEDIGT]

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Postgree Upsize dbf->sql [ERLEDIGT]

Beitrag von ramses »

Hallo zusammen

ich habe 3 DBF's mit dem Xbase-Tool Upsize nach Postgre-Sql portiert.

Nun versuche ich eine neue Spalte in die Tabelle einzufügen:
Der Befehl dazu:
ALTER TABLE musik ADD COLUMN fts_a tsvector;
und dann:
UPDATE musik SET fts_a = to_tsvector( 'pg_catalog.german', coalesce( artist,'') );
hier bekomme ich immer:
ERROR: column "sucheaat" is not of a character type

Ein Feld "sucheaat" ist vorhanden und vom Typ Character.

Was läuft hier falsch?

Gruss Carlo
Zuletzt geändert von ramses am So, 21. Mai 2017 0:16, insgesamt 2-mal geändert.
Valar Morghulis

Gruss Carlo
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Postgree Upsize dbf->sql

Beitrag von ramses »

Problem erkannt ---> ERLEDIGT
Valar Morghulis

Gruss Carlo
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: Postgree Upsize dbf->sql [ERLEDIGT]

Beitrag von georg »

Hallo, Carlo -


da andere auch über das Problem stolpern könnten, kannst Du ein wenig über Ursache/Lösung schreiben? Danke!
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Postgree Upsize dbf->sql [ERLEDIGT]

Beitrag von ramses »

Hallo Georg

ja sicher. Ich komme hiermit deinem Wunsch gerne nach.

Ich habe die betroffene Tabelle mit dem Tool - xbase-Tool-Upsize nach Postgre portiert.
Dabei auf das Feld sucheaat der DBF eine Volltextsuche gelegt.

Code: Alles auswählen

<upsize table="musik" connection="test" mode="isam">
   <deferred>
     <add column = "fts_aat"
          type = "fts"
          binding = "sucheaat"
          language = "de" />

     <add column = "id"
            type = "serial" />
   </deferred> 
Das Upsize Tool hat dann die Tabelle übertragen.

Nach den ersten versuchen merkten wir dass die Suche in den zusammengefasssten Felder Artist Album Titel in sucheaat sehr gut und schnell funktioniert aber oft unglückliche ergebnisse liefert, ich wollte 2 neue Volltext Suchfelder artist und titel anlegen was wie oben beschrieben nicht möglich war.

Nach vielen Versuchen habe ich den zur ersten Volltextsuche zugehörigen Trigger deaktiviert. Dann war das anlegen der gewünschten Spalten mit folgenden Befehlen problemlos:

Code: Alles auswählen

ALTER TABLE musik ADD COLUMN fts_a tsvector;
ALTER TABLE musik ADD COLUMN fts_t tsvector;

UPDATE musik SET fts_a = to_tsvector( 'pg_catalog.german', coalesce( artist,'')  );
UPDATE musik SET fts_t = to_tsvector( 'pg_catalog.german', coalesce( titel,'')  );
CREATE INDEX fts_a_idx ON musik USING gist(fts_a);
CREATE INDEX fts_t_idx ON musik USING gist(fts_t);

CREATE TRIGGER 
fts_a_tsvectorupdate 
BEFORE INSERT OR UPDATE ON musik 
FOR EACH ROW 
EXECUTE PROCEDURE tsvector_update_trigger( fts_a, 'pg_catalog.german', artist);

CREATE TRIGGER 
fts_t_tsvectorupdate 
BEFORE INSERT OR UPDATE ON musik 
FOR EACH ROW 
EXECUTE PROCEDURE tsvector_update_trigger( fts_t, 'pg_catalog.german', titel);
und zum Schluss den Anfänglich deaktivierten Trigger der wieder aktiviert.

Die Lösung sieht jetzt sehr einfach aus, war es aber gar nicht, im Gegenteil, und Erklähren kann ich das ganze noch weniger. ...?????......

Aber die Suche in den 3 Feldern funktioniert jetzt perfekt......

Gruss Carlo
Valar Morghulis

Gruss Carlo
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Postgree Upsize dbf->sql [ERLEDIGT]

Beitrag von ramses »

Solange nichts geändert wurde hat es funktioniert.

Die Ursache liegt bei den Verwendeten Datentypen. Spalten die zur Volltextsuche in ts_vector verwendet werden konnten früher als char angelegt werden unter der aktuellen Version 9.6 müssen diese Spalten vom Type varchar sein andernfalls treten verschiedene Fehler auf. In der aktuellen Postgres wurden die Datentypenrichtlinen angepasst. Das ist/war die Ursache.
Valar Morghulis

Gruss Carlo
Antworten