Execute a consulta do psql e obtenha o erro de sintaxe de saída ERROR: em ou próximo a "$"

0

Estou tentando executar a consulta do psql e obter o ERRO de saída: erro de sintaxe em ou próximo a "$"

Executar consulta do psql

 ➤ psql://postgres@dev-postgresql-95-1:5432/mydb 

# CREATE FUNCTION f_showfile(myfile text) RETURNS text AS $x$ BEGIN RETURN pg_read_file(myfile, 0, 100000); END; $x$ LANGUAGE PLPGSQL SECURITY DEFINER;
CREATE FUNCTION

Executar consulta do bash

-bash-4.2$ psql -d mydb -c "CREATE FUNCTION f_showfile(myfile text) RETURNS text AS $x$ BEGIN RETURN pg_read_file(myfile, 0, 100000); END; $x$ LANGUAGE PLPGSQL SECURITY DEFINER;"
ERROR:  syntax error at or near "$"
LINE 1: ... FUNCTION f_showfile(myfile text) RETURNS text AS $ BEGIN RE...

Quão correta é executada a consulta do psql no bash? Obrigado

    
por Anton Patsev 19.04.2018 / 14:25

1 resposta

2

A string que você envia contém o seguinte:

$x$

que é expandido pelo bash como o conteúdo da variável $x . Como $x está vazio, $x$ é substituído por $ . Você pode evitar a expansão de variáveis usando aspas simples em vez de aspas duplas:

psql -d mydb -c 'CREATE FUNCTION f_showfile(myfile text) RETURNS text AS $x$ BEGIN RETURN pg_read_file(myfile, 0, 100000); END; $x$ LANGUAGE PLPGSQL SECURITY DEFINER;'
    
por 19.04.2018 / 14:28

Tags