Что определяет пределы для вставки большого запроса в psql? - PullRequest
0 голосов
/ 03 октября 2018

На моем локальном компьютере сохранено несколько запросов, которые я регулярно обновляю, а затем хочу повторно выполнить на удаленной производственной БД.Вот пример:

INSERT INTO exp_forum_member (forum_id, member_id)
SELECT 32, uid
FROM exp_members
WHERE email IN (
    'andrew@beaver.com',
    'charles@dragon.com',
    'edgar@frog.com'
)
ON CONFLICT DO NOTHING;

за исключением того, что реальная вещь имеет в общей сложности 134 строки и 3636 символов.

Что мне нравится делать, это:

  1. Откройте сеанс локального терминала с помощью zsh на моем Mac
  2. Подключитесь к удаленной базе данных с помощью psql
  3. Вставьте в запрос
  4. Нажмите return

Иногда это работает, но иногда нет.Когда это не работает, вставленный запрос появляется на экране, и приглашение изменяется с dbname=> на dbname(>.Нажатие return просто начинает новую строку с тем же приглашением.

Конечно, я могу вернуться к обычному приглашению, нажав control + c.Но запрос никогда не запускается.

Что определяет, могу ли я вставить в свой запрос?Я предполагаю, что проблема связана с ограничением длины или, возможно, наличием определенных пробельных символов.И есть ли способ преодолеть эти ограничения?(Я понимаю, что мог бы также запустить psql -f и указать его на локальный файл, в этом случае. Но это сложнее и не всегда работает, например, при запуске psql в удаленном сеансе.)

...