Servus,
kämpfe seit Tagen mit dem copy from - Befehl, weil ich o. g. Fehlermeldung bekomme. Es geht um eine eigene Anwendung beim Kunden, PG 11.x, dort mache ich eine Sicherung über
copy xyz to ‘20200104.sql’ (format BINARY, ENCODING ‘UTF8’)
Möchte ich das bei uns auf PG 11.7 oder auch 12.2 einlesen, kommt immer o. g. Fehlermeldung.
copy xyz from ‘20200104.sql’ (format BINARY, ENCODING ‘UTF8’)
TEXT oder CSV als Format kommen eigentlich nicht in Frage, da hatte ich in der Vergangenheit viele Probleme mit Zeichensätzen, Umlauten, Zeichen, die nicht vorkommen dürfen etc.
Beide Datenbanken sind als UTF8, Zeichensatz germany1252 eingestellt. Mache ich das bei mir, funktioniert es…
Danke!
vielleicht kommst Du besser, Du machst das via pg_backup und da die betreffende Tabelle.
Ist das unter Windows? Es mag am client_encoding liegen.
Servus,
ja, ist unter Windows. Was muss ich ändern am client_encoding? Wie sähe dann der korrekte copy from - Befehl aus?
Danke!
Werner
SET client_encoding = ‘UTF8’;
Das wird expliziet im Dump vermekt, daher schrieb ich auch, verwende lieber pg_dump zur Sicherung.
Du kannst aber auch beom COPY das angeben, lesen der Doku kann hilfreich sein:
test=# \h copy
Command: COPY
Description: copy data between a file and a table
Syntax:
COPY table_name [ ( column_name [, ...] ) ]
FROM { 'filename' | PROGRAM 'command' | STDIN }
[ [ WITH ] ( option [, ...] ) ]
[ WHERE condition ]
COPY { table_name [ ( column_name [, ...] ) ] | ( query ) }
TO { 'filename' | PROGRAM 'command' | STDOUT }
[ [ WITH ] ( option [, ...] ) ]
where option can be one of:
FORMAT format_name
FREEZE [ boolean ]
DELIMITER 'delimiter_character'
NULL 'null_string'
HEADER [ boolean ]
QUOTE 'quote_character'
ESCAPE 'escape_character'
FORCE_QUOTE { ( column_name [, ...] ) | * }
FORCE_NOT_NULL ( column_name [, ...] )
FORCE_NULL ( column_name [, ...] )
ENCODING 'encoding_name'
URL: https://www.postgresql.org/docs/12/sql-copy.html
Servus,
danke, die Doku hab ich gelesen, deshalb schrieb ich ja im Eingangs-Post:
Ich verwende also ENCODING!
SET client_encoding ist was für psql? Ich mache alles von einem Programm heraus.