As variáveis do Postgres são criadas através do comando \ set, por exemplo ...
\set myvariable value
... e pode ser substituído, por exemplo, como ...
SELECT * FROM :myvariable.table1;
... ou ...
SELECT * FROM table1 WHERE :myvariable IS NULL;
edit: A partir do psql 9.1, as variáveis podem ser expandidas entre aspas, como em:
\set myvariable value
SELECT * FROM table1 WHERE column1 = :'myvariable';
Nas versões mais antigas do cliente psql:
... Se você deseja usar a variável como o valor em uma consulta de sequência condicional, como ...
SELECT * FROM table1 WHERE column1 = ':myvariable';
... então você precisa incluir as aspas na própria variável, pois as opções acima não funcionarão. Em vez disso, defina sua variável como tal ...
\set myvariable 'value'
No entanto, se, como eu, você se deparou com uma situação em que queria criar uma string a partir de uma variável existente, achei o truque a ser esse ...
\set quoted_myvariable '\'' :myvariable '\''
Agora você tem uma variável entre aspas e não entre aspas da mesma string! E você pode fazer algo assim ....
INSERT INTO :myvariable.table1 SELECT * FROM table2 WHERE column1 = :quoted_myvariable;