#sh #psql #ksh
#ш #psql #кш
Вопрос:
У меня есть ниже команда psql, которая работает нормально:
psql --echo-queries -v ON_ERROR_STOP=0 -v GROUP_ID=${id} ${PS_USER}:${PS_PASS}@${PS_INST}:${PS_PORT}/${PS_DB} lt;lt; EOF 1 gt; ${log_file} 2gt;amp;1 set AUTOCOMMIT OFF INSERT INTO city (city_id, city, country_id) VALUES (1000,'TEST1', 1); EOF
Я бы хотел, чтобы код был более чистым, заранее подготовив строку подключения и выполнив ее при необходимости, что-то вроде:
#preparing the connection string ps_connection="${PS_USER}:${PS_PASS}@${PS_INST}:${PS_PORT}/${PS_DB}" psql --echo-queries -v ON_ERROR_STOP=0 -v GROUP_ID=${id} ${ps_connection} lt;lt; EOF 1 gt; ${log_file} 2gt;amp;1 set AUTOCOMMIT OFF .... EOF
Когда я делаю то же самое с sqlplus, он работает:
sqlplus -s $curr_connection lt;lt; EOF 1gt;gt; ${log_file} 2gt;amp;1 ....
По какой причине он не работает с psql?
Я также хорошо справляюсь с подготовкой полной команды psql, я попробовал eval и exec и не сработал:
ps_connection="psql --echo-queries -v ON_ERROR_STOP=0 -v GROUP_ID=${id} ${PS_USER}:${PS_PASS}@${PS_INST}:${PS_PORT}/${PS_DB}" #also tried exec ${ps_connection} eval ${ps_connection} lt;lt; EOF 1 gt; ${log_file} 2gt;amp;1 set AUTOCOMMIT OFF .... EOF
Получение :
psql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
Комментарии:
1. Определите «не работает». Что же происходит и чем это отличается от ожиданий?
2. @glennjackman — Я редактирую сообщение с ошибкой ,которую получаю, надеюсь, теперь это яснее
3. Возможно, файл сценария содержит окончания строк в стиле DOS, поэтому
ps_connection
строка заканчиваетсяr
символом. Однако я не знаю, вызовет ли это ту конкретную ошибку.