pgAdmin III schreibt Dateien mit Junk-Dateien, wodurch PSQL ausfällt

921
SeldomNeedy

Ich stieß auf das Dilemma, einige psqlKonsolenbefehle ausführen zu müssen, weil ein Kollege die \iAnweisung von psql in einem gespeicherten Skript verwenden musste, um zusätzliche SQL-Anweisungen aus einer anderen Datei auszuführen. Ich bemerkte jedoch, dass psql diese Dateien aufgrund einiger zusätzlicher Zeichenabfälle verschluckt pgAdmin schrieb ihnen:

psql:C:/tmp/junk.sql:3: ERROR: syntax error at or near "CREATE" LINE 1: CREATE TABLE junktable ( 

psql\iWird hier benötigt, da es kein offizieller Bestandteil von SQL ist. Es wird also nicht ausgeführt, wenn Sie einen solchen Befehl direkt an den Interpreter der Datenbank senden, selbst wenn er die Dateien auf Ihrer lokalen Festplatte aufrufen konnte.

Um es einfach zu halten, wollte ich einen Weg finden, wie der PgAdmin-SQL-Editor nett mit Postgres spielen kann. Ich sage daher nicht, dass andere Leute bei der Arbeit einen anderen Editor herunterladen und installieren, nur um dies zu umgehen. Sie kennen und verwenden bereits pgAdmin.

Verwandte Fragen:

3

1 Antwort auf die Frage

2
SeldomNeedy

Glücklicherweise gibt es eine Lösung, die keine Änderungen an psql.exe oder ähnlichem erfordert.

Wenn Sie in den Optionen von PgAdmin III (Datei -> Optionen) nachsehen, finden Sie unter der Überschrift "Abfragetool" unter "Abfragedatei" eine Option zum Umschalten des Kontrollkästchens "Stückliste für UTF-Dateien schreiben".

PgAdmin III options: Query tool: Query file

Wenn Sie auf OK klicken, sollten Sie Dateien aus PgAdmin speichern können, die mit der gepackten Version von psql.exe funktionieren. Wenn Sie über vorhandene Dateien verfügen, in denen die UTF-BOM-Tabelle vorhanden ist, die das Lesen von psql verhindert hat, können Sie sie aus dem PgAdmin-SQL-Abfrage-Editor laden und dann die Option Speichern unter verwenden, um sie darüber zu speichern. Es sollte auch funktionieren, um nur eine kleine Änderung vorzunehmen, z. B. das Hinzufügen einer Kommentarzeile und das regelmäßige Speichern (ctrl-S).