На моем локальном компьютере сохранено несколько запросов, которые я регулярно обновляю, а затем хочу повторно выполнить на удаленной производственной БД.Вот пример:
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 символов.
Что мне нравится делать, это:
- Откройте сеанс локального терминала с помощью
zsh
на моем Mac - Подключитесь к удаленной базе данных с помощью
psql
- Вставьте в запрос
- Нажмите return
Иногда это работает, но иногда нет.Когда это не работает, вставленный запрос появляется на экране, и приглашение изменяется с dbname=>
на dbname(>
.Нажатие return просто начинает новую строку с тем же приглашением.
Конечно, я могу вернуться к обычному приглашению, нажав control + c.Но запрос никогда не запускается.
Что определяет, могу ли я вставить в свой запрос?Я предполагаю, что проблема связана с ограничением длины или, возможно, наличием определенных пробельных символов.И есть ли способ преодолеть эти ограничения?(Я понимаю, что мог бы также запустить psql -f
и указать его на локальный файл, в этом случае. Но это сложнее и не всегда работает, например, при запуске psql
в удаленном сеансе.)