Welches Zeichen als Identifier verwenden?

Hallo,
vorab ich bin kein Programmierer, deshalb versuche ich meine Frage so gut es geht zu umschreiben.
Wir importieren eine CSV Datei mittels einer Procedur in eine Postgre DB.
Bei Postgre ist im Default das " das Zeichen für den Identifiere. Als Trennzeichen ist bei uns das | definiert. Die CSV Datei kommt im ISO 8859-1 Format.
Der Import ist nun ein paar mal gegen die Wand gelaufen, da in einem “Feld” eine Wert mit einem " drin stand. Damit kommt er dann nicht klar.
Nun kann ich in der Procedur ja definieren, welches Zeichen ist ersatzweise als Identifier verwenden will. Wir haben jetzt mal das } genommen. Geht soweit. Aber was passiert, wenn mal ein Text mit dem Zeichen kommt? Dann knallt es wieder.

Jetzt ist die Frage, ob man aufgrund der Quelldatei ISO 8859-1 ggf. eine Zeichen definieren kann, was bei dem Encoding sicherlich nicht kommen kann?

Du kannst in PostgreSQL auch mit dem COPY - Befehl CSV-Dateie importieren, dabei kannst Du alles mögliche definieren. Wichtig ist halt nur, daß der Ersteller der CSV schon sauber arbeitet.

Dank dir. Also die Datei wurde per Job aus dem Host erzeugt. Wie gesagt in ISO 8859-1.
Wie kann ich rausbekommen, welches Zeichen in diesem Zeichensatz nicht vorkommen kann?
Der Lieferant hat sauber gearbeitet. Wenn der User im Front End in einem Feld diese Zeichen eingeben kann, dann muss ich die auch importieren.

Nur als kleiner Hinweis: es heißt entweder PostgreSQL oder Postgres - nichtPostgre

1 „Gefällt mir“

Nun ja. Wir können aus “Also die Datei wurde per Job aus dem Host erzeugt” nicht wirklich erkennen, wie das erzeugt wurde und wie die CSV aufgebaut ist. Der Lieferant sollte Dir sagen, was DELIMITER und QUOTE - Zeichen sind.
Wenn dann diese damit korrekt erstellt wurde UND du das dann beim COPY-Befehl angiebst, sollte der Import klappen. PostgreSQL verwendet faktisch auch CSV als Backup-Format (für die Tabelleninhalte).

Dieses Thema wurde automatisch 60 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Antworten mehr erlaubt.