Разработка

psql: перенаправляем вывод в файл

=> copy (select 42) to '/tmp/answer';

Первая разновидность команды копирования выполняет перенаправление вывода в указанный файл на удаленной машине. Ждя ее исполнения пользователь должен обладать правами рута.

=> /copy (select 42) to '/tmp/answer'

Вторая разновидность — это метакоманда клиента psql которой не требуются права суперпользователя и запись выполняется в файл на локальной машине.

Стоит обратить внимание, что первый вариант — это команда sql (поэтому за ней и идет точка с запятой), а вторая — это именно метакоманда. окончание — всегда символ новой строки.

Разработка

PostgreSQL: bytea в varchar

byteaЕсть такой тип: bytea. При попытке вдеслть селект на него в консоли он отображен не будет. А в Pgadmin будет заглушка «<двоичные данные>». Это совсем неудобно когда хочется посмотреть, что же там скрывается.

Но все решается просто 🙂

select convert_from(body, 'utf8') from megatable

Вторым аргументом convert_from выступает кодировка исходного текста.
 

Разработка

PostgreSQL: ограничиваем время выполнения запроса

db=> set statement_timeout to 100;
SET
db=> select pg_sleep(110);
ERROR:  canceling statement due to statement timeout
db=> set statement_timeout to 0;
SET
db=> 

Первым выражением установим максимальное время выполнения запроса в миллисекундах. Вторым пойдет запрос, а третьим мы снимем ограничение на время выполнения (0 — значение по умолчанию).

Дока.

Найдено в сети, Разработка

PostgreSQL: insert on duplicate key

Да-да. Постгрес не умеет делать

insert * on duplicate key ...

Но это легко эмулируется последовательностью запросов.

UPDATE table SET field='C', field2='Z' WHERE id=3;
INSERT INTO table (id, field, field2)
       SELECT 3, 'C', 'Z'
       WHERE NOT EXISTS (SELECT 1 FROM table WHERE id=3);