2016-12-29 2 views
2

Я пытаюсь выполнить несколько команд, в которых я PostgreSQL платить через командную строку, но она возвращает результат только с 2-ым:Невозможно выполнить команду в Psql из терминала

psql -d data1 -U user123 -c "select count(*) from table1; select count(*) from table2;" 

, тогда как когда я вхожу в «psql» и запускаю те же команды, я получаю 2 набора результатов.

Почему это не работает?

ответ

1

psql --help дает (частично)

-c, --command=COMMAND run only single command (SQL or internal) and exit 

У вас есть две команды здесь, чтобы получить оба результата вы должны combine the queriesUNION); как

psql -d data1 -U user123 -c \ 
    "select count(*) from table1 UNION ALL select count(*) from table2;" 

Или, которыми управляют две команды (запросы)

psql -d data1 -U user123 -c "select count(*) from table1;" 
psql -d data1 -U user123 -c "select count(*) from table2;" 

Или, вы можете поместить обе команды в файл и использовать -f (psql --help говорит)

-f, --file=FILENAME  execute commands from file, then exit 
+0

Что непонятно в моем вопросе? – Karim

+0

@ Karim Edited. Надеюсь, что это яснее. –

+0

перечитать мой вопрос. – Karim

0

Использовать трубу:

$ echo " 
> select 1; 
> \d 
> " | psql # here is the magic, happy New Year *~<:o) 
╔══════════╗ 
║ ?column? ║ 
╠══════════╣ 
║  1 ║ 
╚══════════╝ 
(1 row) 

       List of relations 
╔════════╤════════════════════╤══════╤══════════╗ 
║ Schema │  Name  │ Type │ Owner ║ 
╠════════╪════════════════════╪══════╪══════════╣ 
║ public │ dummy    │ view │ postgres ║ 
║ public │ pg_stat_statements │ view │ nd  ║ 
╚════════╧════════════════════╧══════╧══════════╝ 
Смежные вопросы