claeis / ili2db

interlis import/export to relational databases
30 stars 30 forks source link

ili2pg - Export von binären Strings #286

Closed snoopy21 closed 5 years ago

snoopy21 commented 5 years ago

Bei einem Export per ili2pg aus einer PostGIS-DB treten zwei verschiedene Fehler auf:

claeis commented 5 years ago

Der binäre Block wird 1 zu 1 aus der DB gelesen, der Zeilenumbruch erfolgt beim XML-Schreiben. Was gem. https://www.w3.org/TR/xmlschema-2/#base64Binary valid ist.

snoopy21 commented 5 years ago

Ich habe das Ganze nochmals geprüft und bin meinem Problem vielleicht näher gekommen. Wenn ich das die DB in PostgreSQL erzeuge wird für das Attribut symbol der Datatyp "bytea" gewählt. Ich lege nun darin einen base46 encodierten String ab. Nun sollte beim Export im xtf wieder derselbe String darin sein, wie kann ich das erreichen? Punkto Zeilenumbruch, besten Dank für den Hinweis, ich werde dies der Abgabestelle weiterleiten.

claeis commented 5 years ago

Kommt auf das Abfrage-Tool an, ob und wie es bytea umwandelt. Mit JAVA/JDBC ist es einfach byte[] (also kein base64).

claeis commented 5 years ago

Und man kann immer mit encode()/decode() base64 in bytea umwandeln.

snoopy21 commented 5 years ago

Da ich die Exporte per ili2pg mache, müsste ich somit das xtf nachträglich nochmals konvertieren. Könnte man hier nicht einen zusätzlichen Parameter in ili2db dafür vorsehen?

claeis commented 5 years ago

Ja, und wie erfolgt der Import?

snoopy21 commented 5 years ago

Bisher war es eine Ersterfassung, in welcher ich die Daten generell per QGIS erfasst habe, ausser die Symboldaten, welche per DBEaver erfasst wurden (Base64 encodierter String). Da dies mittels QGIS bzw. pgAdmin nicht klappte. Nun habe ich in ein neues Schema die exportierten Daten, bei welchen ich die Base64 codierten Strings eingefügt hatte, wieder importiert. Erstaunlicherweise zeigt mir nun DBeaver die Symbole als Bild an und ich kann Files reinladen. Wenn ich diese Daten wieder exportiere, kommen tatsächlich die Base64 codierten Strings. Von daher hat sich meine Anfrage erledigt. Besten Dank für die Geduld.