Qual é uma maneira conveniente de executar consultas com várias linhas no postgres usando ssh?

9

Digamos que eu precise escrever algumas consultas no console, qual é a maneira mais eficiente de executar consultas com várias linhas, como CREATE TABLEinstruções?

Estou acostumado a usar o Microsoft Management Studio, mas agora tenho que aprender sobre o PostgreSQL rapidamente.

Chad Harrison
fonte
Digite? Copiar e colar? Redirecionar de um arquivo?
Michael Hampton
Sim, quero dizer, digite com os dedos: P. O que eu entendo é que o #prompt do postgres aparece apenas uma linha por vez, o que é ótimo para coisas como CREATE DATABASEou ALTER USER. Como eu seria capaz de formatar bem meu texto antes de executar?
Chad Harrison

Respostas:

4

Não existe realmente uma "consulta de várias linhas" - no que diz respeito ao PostgreSQL, todo esse espaço em branco e essas novas linhas não fazem sentido (a menos que ocorram dentro de uma string ou falemos de guias e coisas em uma COPYdeclaração ou alguns outros lugares especiais).

Escrever consultas "no console" sobre SSH geralmente é feito com a psqlferramenta, que é o terminal interativo do Postgres (consulte a documentação para obter mais informações).

Você pode passar arquivos de texto contendo consultas para psqlusar a -fopção

Você também pode passar consultas para psqla linha de comando (citadas conforme apropriado para o seu shell) ou canalizá-las via STDIN (o fluxo de entrada padrão) - consulte a -copção

voretaq7
fonte
Tubos, deveria ter pensado em tubos. Eu ainda aprendo.
Chad Harrison
25

A seguir, você será levado ao terminal interativo do PostgreSQL:

$ psql <your database name>

Em seguida, digite \e(ou \edit) para abrir um editor ( vié o padrão):

# \e

Escreva alguma consulta:

select now();

Por fim, salve e saia do seu editor (por exemplo, :wqin vi) e psqlexecutará a consulta que você acabou de escrever.

Para definir um editor diferente, como vimou nano, conjunto de um dos seguintes variáveis de ambiente: PSQL_EDITOR, EDITOR, VISUAL.

Para obter mais informações, consulte https://www.postgresql.org/docs/current/app-psql.html e pesquise \e.

TheGrimmScientist
fonte
2

Você pode gravar a consulta em um arquivo temporário e executá-la com psql -f /path/to/temp/file

Nam G VU
fonte
0

Óbvio, mas se alguém não estiver ciente, você pode escrever instruções com várias linhas diretamente no prompt do psql:

psql -h localhost -p 5432 -U postgres public
public=# SELECT
public=# *
public=# FROM
public=# mytable
public=# LIMIT 1;

Observe o ;caractere à direita - qualquer comando SQL será executado apenas quando esse caractere for emitido. Portanto, a maneira mais fácil é simplesmente copiar e colar comandos SQL de várias linhas com um final ;.

Alex
fonte