Добрый день.
Есть таблица которая выгружается в файл csv, данные в нее попадают следующим скриптом
INSERT INTO "public"."Export_orderby" (bludo, kol_vo, price, sum_seb, sebest, sum_price, food_coast)
SELECT bludo, kol_vo, price, sr_price, sebest, paid, foodcoast
FROM "public"."Svod"
ORDER BY kol_vo DESC;
INSERT INTO "public"."Export_orderby" (sum_price,food_coast)
select sum(paid), sum(sebest*kol_vo)/sum(paid)*100 FROM "public"."Svod";
Потом сам экспорт
COPY "public"."Export_orderby" (bludo, kol_vo, sebest, sum_seb, price, sum_price, food_coast)
TO '/var/reports/tmp_gch_rk.csv'
WITH
csv
ENCODING 'win1251'
DELIMITER ';';
Примерно в трех случаях из 10, порядок сортировки по кол-ву нарушается... то есть несколько строк с меньшим кол-вом попадают раньше чем с большим, а далее уже корретно.
пример:
Чизкейк и Темный Шоколад 1 -- как он сюда попал?
Вафля с мороженым Т,Шкоколад 1 -- и этот
Салфетка влажная 1 -- и этот
119138 37,0844 -- а это самый последний инсерт в таблицу.
Соус Сырный 126 -- с этого момента пошло все ок
Пепси-Кола стд 0,5 90
в чем беда?
В документации написано, что
В документации написано, что SQL-сервер не гарантирует выдачу записей в таблице по порядку, если в параметре запроса ЯВНО не указана сортировка. Т.е. вставка в таблицу "public"."Export_orderby" с сортировкой бессмыслена, а вот выгрузка наоборот должна быть с сортировкой. Т.е. в операторе COPY вам нужно использовать SELECT с сортировкой и будет вам счастье:
http://postgresql.ru.net/manual/sql-copy.html