Вопросы по SQL и другие аспекты работы PostgreSQL

warning: Creating default object from empty value in /var/www/victor/web/pgdocs.ru/data/modules/taxonomy/taxonomy.pages.inc on line 33.
Здесь обсуждаются запросы на SQL в PostgreSQL. Оптимизация запросов, реализация, подходы и т.д.

Поиск по таблицам

Всем привет! Я только начинаю постигать SQL и PostgeSQL, поэтому вопрос у меня довольно-таки простой и скорее всего имеет тривиальное решение, но поскольку с аспектами SQL я знаком плохо и документацию пока ещё воспринимаю не до конца =)

Задача состоит в следующем:

Имеется база данных, в ней две таблицы: table1 (id, table2_id) и table2(id, column1, column2). По сути table2_id - это FOREIGN KEY, но в БД он так не определён, поскольку приложение, которое использует эту БД не позволяет использовать такиею ключи, точнее это крайне не желательно. Отсюда собственно и проблема.

libpq работа с бинарными данными

День добрый
Я работаю с PostgreSQL 8.4
возникли проблемы при попытке вставить бинарные данные.

const char * paramValues[1];
int paramLengths[1];
int paramFormats[1];
 
int    binaryIntVal = 4;
paramValues[0] = (char*)&binaryIntVal;
paramLengths[0] = sizeof(int);;
paramFormats[0] = 1;
 
res = PQexecParams(conn,"INSERT INTO table_user(user_accauntstr) VALUES ( $1::bytea[] )",1,NULL,paramValues,paramLengths,paramFormats,1); 

В результате получаю ошибку:
PGRES_FATAL_ERROR: number of array dimensions (67108864) exceeds the maxi
mum allowed (6)

вернуть множество строк из функции

Добрый день.
Подскажите пожалуйста как написать функцию возвращаю множество столбцов и строк (таблицу) на plpgsql.
На SQL все отлично

CREATE OR REPLACE FUNCTION rating_point_list_default(IN p_userid integer, IN p_idel integer)
  RETURNS TABLE(id integer, title character varying, mark smallint) AS
$BODY$
SELECT service.id,service.title,mark  
FROM servicecategory,service LEFT OUTER JOIN rating ON (service.id = rating.serviceid AND rating.userid=$1 AND rating.pointid=$2) 
WHERE category IN('vid') AND servicecategory.id=service.categoryid;

Postgresql + Visual C++ 2010. Как скомпилировать?

Хочу написать клиент для Postgresql.

Мои действия:

-Добавил в VC++ Directories->Include Directories папку ...pgsql\include
-Добавил в VC++ Directories->Library Directories папку ...pgsql\lib
-Добавил в Linker->Command Line -lpq

Код выгляди так:

#include <libpq-fe.h>  
 
int main(){
 	const char * conninfo;
 	PGconn *conn;  	
 	conninfo = "hostaddr = 127.0.0.1";
 
  	conn = PQconnectdb(conninfo);
  	PQfinish(conn);
 
  	RETURN 0; 
}

В результате получаю:
1>LINK : warning LNK4044: unrecognized OPTION '/lpq'; ignored

copy

Уважаемый форум
Выполняю
elmg=# copy wve(x,y,z,x_,y_,z_,dt,tm,sid) from '/export/public/pdata/wv.sql' delimiters ',';
ERROR: missing data for column "dt"
CONTEXT: COPY wve, line 84: "000575,002781,001895,40021,67330112,1"

Файл wv.sql иногда в некоторых строках не содержит все поля (последовательность формирует оборудование), поэтому команда copy, в этом случае, не проходит.

Существует ли возможность, не загружая в таблицу wve неполные строки файла wv.sql, исполнить команду copy и загрузить правильные строки файла wv.sql?

Длинное имя файла (с пробелами) в COPY.

Доброго времени суток!

Postgresql под Windows. Пытаюсь выполнить COPY из файла:
"C:\Documents and Settings\USER1\Local Settings\Temp\cache.tmp"
Ни в какую не желает переваривать путь с пробелами - орёт, что нет такого файла.
Обратные слэши на прямые - заменял а-ля *nix, пытался и так:
"C:/DOCUME~1/USER1/LOCALS~1/TEMP/CACHE.TMP"
и так:
"C:/Documents\ and\ Settings/USER1/Local\ Settings/Temp/cache.tmp"
ни в какую - нет такого файла и всё тут.

Подскажите - в какой вид путь привести, чтобы postgres его проглотил?

Как узнать id новой записи (php)

Подскажите новичку...
Работаю на php c postgres

В таблице есть поле id - первичный ключ : nextval('table_id_seq'::regclass)
Делаю новую запись запросом

$result = pg_query($connection, "INSERT INTO table ... ");

В новой записи id заполнился автоматически.

Теперь нужно как-то узнать значение id, как это можно сделать?

Кодировка win866 - это что?

Подскажите, кодировка в функции convert win866 - это 866(DOS)?

Как просмотреть имена полей в созданной таблице без отображения pg.dropped.oid?

Создаю табличку с определенными полями, затем ALTER TABLE ttt DROP FIELD qqq;
И удаленные поля мешают работать приложению, т.к. поле не удаляется до конца. появляется pg.dropped.oid

Чтоб получить, какие имена полей у таблицы я отправляю запрос $type - содержит таблицу
$query_choise = pg_query($db, "SELECT pg_class.relname, pg_attribute.attname FROM pg_catalog.pg_class, pg_catalog.pg_attribute WHERE pg_class.relname='$type' AND pg_class.oid = pg_attribute.attrelid");

полученный результат я в цикле кладу в массив и вывожу на экран.

Собранный материал

Back to top

(С) Виктор Вислобоков, 2008-2023