Я столкнулся с дилеммой: мне пришлось запустить несколько psql
консольных команд, так как коллеге понадобилось использовать директиву psql \i
в сохраненном скрипте для выполнения дополнительных 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.
Похожие вопросы:
решение1
К счастью, есть решение, которое не требует внесения изменений в psql.exe или чего-то подобного.
Если вы покопаетесь в параметрах PgAdmin III (Файл -> Параметры), под заголовком «Инструмент запросов» в разделе «Файл запроса», вы найдете флажок, переключающий опцию «Записывать BOM для файлов UTF».
После нажатия кнопки OK вы сможете сохранять файлы из PgAdmin, которые работают с упакованной версией psql.exe. Если у вас есть существующие файлы, в которых присутствует таблица UTF BOM, которая мешает psql правильно их читать, вы можете загрузить их из редактора SQL-запросов PgAdmin, а затем просто использовать опцию Save As, чтобы сохранить их на месте. Также должно сработать простое внесение небольших изменений, например добавление строки комментария и выполнение обычного Save (ctrl-S).