Digamos que eu precise escrever algumas consultas no console, qual é a maneira mais eficiente de executar consultas com várias linhas, como CREATE TABLE
instruções?
Estou acostumado a usar o Microsoft Management Studio, mas agora tenho que aprender sobre o PostgreSQL rapidamente.
postgresql
Chad Harrison
fonte
fonte
#
prompt do postgres aparece apenas uma linha por vez, o que é ótimo para coisas comoCREATE DATABASE
ouALTER USER
. Como eu seria capaz de formatar bem meu texto antes de executar?Respostas:
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
COPY
declaração ou alguns outros lugares especiais).Escrever consultas "no console" sobre SSH geralmente é feito com a
psql
ferramenta, que é o terminal interativo do Postgres (consulte a documentação para obter mais informações).Você pode passar arquivos de texto contendo consultas para
psql
usar a-f
opçãoVocê também pode passar consultas para
psql
a linha de comando (citadas conforme apropriado para o seu shell) ou canalizá-las via STDIN (o fluxo de entrada padrão) - consulte a-c
opçãofonte
A seguir, você será levado ao terminal interativo do PostgreSQL:
Em seguida, digite
\e
(ou\edit
) para abrir um editor (vi
é o padrão):Escreva alguma consulta:
Por fim, salve e saia do seu editor (por exemplo,
:wq
invi
) epsql
executará a consulta que você acabou de escrever.Para definir um editor diferente, como
vim
ounano
, 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
.fonte
Você pode gravar a consulta em um arquivo temporário e executá-la com
psql -f /path/to/temp/file
fonte
Óbvio, mas se alguém não estiver ciente, você pode escrever instruções com várias linhas diretamente no prompt do psql:
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;
.fonte