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
Postgree Upsize dbf->sql [ERLEDIGT]
Moderator: Moderatoren
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2825
- Registriert: Fr, 08. Feb 2008 21:29
- Hat sich bedankt: 96 Mal
- Danksagung erhalten: 13 Mal
Re: Postgree Upsize dbf->sql [ERLEDIGT]
Hallo, Carlo -
da andere auch über das Problem stolpern könnten, kannst Du ein wenig über Ursache/Lösung schreiben? Danke!
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.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2516
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: Postgree Upsize dbf->sql [ERLEDIGT]
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.
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:
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
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>
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);
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
Gruss Carlo
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2516
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: Postgree Upsize dbf->sql [ERLEDIGT]
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.
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
Gruss Carlo