Удаление postgresql
sudo apt-get --purge remove postgresql
dpkg -l | grep postgres
sudo apt-get --purge remove postgresql postgresql-doc postgresql-client-common
https://askubuntu.com/questions/32730/how-to-remove-postgres-from-my-installation
Настройка временной зоны для БД postgres
Подключаемся под postgres
sudo su - postgresЧитать далее «Настройка временной зоны для БД postgres»
Настройка временной зоны на Ubuntu 18
В systemd есть своя утилита для настройки даты и часового пояса. Чтобы узнать текущее состояние выполните:
timedatectl status
Для просмотра всех доступных временных зон выполните такую команду:
Читать далее «Настройка временной зоны на Ubuntu 18»Автоматическое документирование базы данных
Для документирование базы данных применяется открытое решение Autodoc.
Инструкция по установке и настройке на сайте appcode.pw
Основной скрипт для запуска генерации документации.
cd autodoc postgresql_autodoc -d cic-dev-db -h 192.168.17.111 -u postgres --password=<pw> -t html -s "core|dbo" -f /var/www/html/cic-dev-db
Демонстрационный вариант документации можно посмотреть на сайте http://cic.it-serv.ru/cic-dev-db.html
Autodoc для postgresql
Ставим приложение autodoc
$ sudo apt install libdbi-perl libhtml-template-perl libterm-readkey-perl libdbd-pg-perl
$ git clone https://github.com/cbbrowne/autodoc.git
$ cd autodoc
$ sudo make install
Дальше запускаем скрипт
postgresql_autodoc -d cic-dev-db -h 192.168.17.111 -u postgres --password -t html -s core -f cic-dev-db-core
Примечание: схемы можно передать как
-s "core|dbo"
Исходный код: https://github.com/cbbrowne/autodoc
Обновление строки в postgresql
UPDATE dummy
SET customer=subquery.customer,
address=subquery.address,
partn=subquery.partn
FROM (SELECT address_id, customer, address, partn FROM /* big hairy SQL */ ...) AS subquery
WHERE dummy.address_id=subquery.address_id;
UPDATE table T1
SET column1 = T2.column1
FROM
table T2
INNER JOIN table T3 USING (column2)
WHERE T1.column2 = T2.column2;
https://stackoverflow.com/questions/6256610/updating-table-rows-in-postgres-using-subquery
Обновление
Актуализирована информация по базе данных, обновлена статусная схема маршрутов.
Статусная схема храниться в формате Visio 2019 и увидеть ее можно тут. В формате PNG ниже.
Обновленная Схема базы данных тут.
Читать далее «Обновление»Интеграция
Информация актуальна для пилотной версии МРСК ЦиП на 08.10.2020
В пилотной версии МРСК ЦиП информация может быть импортирована в следующие таблицы:
- dbo.ed_input_meter_readings — текущие контрольные показания
- dbo.ed_registr_pts — точки учета
- dbo.ed_device_types — типы прибора учета
Примечание: информацию по таблицам можно посмотреть тут
Точка учета
Информация о точках учета должна храниться в таблице dbo.ed_registr_pts. Здесь может храниться любая информация, но при этом должны быть заполнены следующие поля:
- c_address: text — полный адрес
- n_longitude: numeric — долгота
- n_latitude: numeric — широта
- f_division: integer — филиал/отделение
- f_subdivision: integer — участок
Показания
Информация о показаниях храниться в двух таблица:
- dbo.ed_input_meter_readings — входящие показания. Первоначальные показания в нашей системе. Если показания и дата неизвестны, то можно указать null. При этом информация о тарифной зоне и разрядности должна быть указана обязательно.
- dbo.ed_output_meter_readings — исходящие показания, результат обхода.
Первичные показания должны быть загружены в систему в обе таблицы, так как генерация показания для новых обходов производится на основе предыдущих данных.
-- пример наличия первичных показаний INSERT INTO dbo.ed_input_meter_readings(f_point, n_value_prev, d_date_prev, n_digit, f_time_zone, f_registr_pts, n_tariff) VALUES ('b17c5973-615c-49c6-976f-7a491a41a160', null, null, 5.0, 2, '028d65a4-3621-408b-af0a-230242f41702', 1); -- создано показание с тарифом 1 и показанием "Сутки" INSERT INTO dbo.ed_output_meter_readings(fn_meter_reading, fn_point, fn_route, fn_user_point, n_value, d_date) VALUES ('394fb071-7d9f-4c13-ada6-3c45b0f1643b', 'b17c5973-615c-49c6-976f-7a491a41a160', 'c68b1a77-0a13-4c05-bc3e-c2504868f0ac', '547c39bd-d171-4cae-bf64-c30fae16210a', null, '2020-05-01');
Алгоритм обработки показаний тут.
Заметка: работа с JSON в postgresql
Работая с JSON в postgresql заметил следующие момент:
select t.value::uuid from json_array_elements_text('["e7ded0cd-12dd-47f5-a75b-192376291e83"]'::json) as t;select (t.value #>> '{id}')::uuid
from json_array_elements('[{"id": "e7ded0cd-12dd-47f5-a75b-192376291e83"}]'::json) as t;
Две команды возвращают одинаковый результат, но разными способами.