pgAdmin III записывает файлы с мусором в них, что приводит к сбою PSQL

858
SeldomNeedy

Я столкнулся с дилеммой необходимости запуска некоторых psqlконсольных команд, потому что коллеге нужно было использовать \iдирективу psql в сохраненном скрипте для выполнения дополнительных операторов SQL из другого файла, но я заметил, что psql задыхался от этих файлов из-за некоторых дополнительных символов мусора, которые pgAdmin писал им:

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

psqlздесь необходим, потому что \iне является официальной частью SQL, поэтому он не будет работать, если вы отправите подобную команду непосредственно интерпретатору базы данных, даже если у нее был способ получить файлы на вашем локальном диске.

Для простоты я хотел найти способ, позволяющий sql-редактору PgAdmin хорошо играть с Postgres, поэтому я не говорю другим людям на работе скачать и установить другой редактор, чтобы обойти это; они уже знают и используют pgAdmin.

Смежные вопросы:

3

1 ответ на вопрос

2
SeldomNeedy

К счастью, есть решение, которое не требует изменений в psql.exe или чего-либо подобного.

Если вы поэкспериментируете с параметрами PgAdmin III («Файл» -> «Параметры») под заголовком «Инструмент запроса» в «Файл запроса», вы найдете опцию переключателя флажка «Записать спецификацию для файлов UTF».

Параметры PgAdmin III: Инструмент запросов: Файл запросов

Как только вы нажмете OK, вы сможете сохранить файлы из PgAdmin, которые работают с упакованной версией psql.exe. Если у вас есть файлы, в которых присутствовала таблица спецификации UTF, которая не позволяла psql правильно их читать, вы можете загрузить их из редактора SQL-запросов PgAdmin, а затем просто использовать опцию Сохранить как, чтобы сохранить их на месте. Это также должно работать, чтобы просто внести небольшое изменение, например добавить строку комментария и сделать обычное сохранение (Ctrl-S).