За да изтриете видео от базата данни, изпълнете следните стъпки
1. Спрете услугата nns сървър (Път: Контролен панел \ Административни инструменти \ Услуги) ,
2. Отворете командния ред като администратор,
3. Ако вашият сървър е инсталиран в директорията по подразбиране, стартирайте PostgreSQL с помощта на командата
"C:\Program Files\KickidlerNode\pgsql\bin\pg_ctl.exe" start -D "C:/Program Files/KickidlerNode/pgsql/data" -w -o "--logging-collector=on --log-destination=stderr --log-directory=pg_log --log-filename=ipg-%a.log --log-truncate-on-rotation=on --log-rotation-age=1d --log-line-prefix=\"%m \" --log-timezone=\"Europe/Moscow\" --log-statement=ddl --log-connections=on --log-disconnections=on --listen-addresses=127.0.0.1 --port=5439 --max-connections=100 --shared-buffers=262144kB --wal-buffers=5242kB --effective-cache-size=734317kB --work-mem=7811kB --maintenance-work-mem=39059kB --checkpoint-segments=64 --checkpoint-completion-target=0.9"
4. Свържете се с PostgreSQL с помощта на командата:
"C:\Program Files\KickidlerNode\pgsql\bin\psql.exe" -h 127.0.0.1 -p 5439 -U kickidler_node
5. Проверете обемите на видео по дати, като използвате заявката:
select pos::date, pg_size_pretty(sum(octet_length(data))) from video_frame group by pos::date;
6. Изтрийте видеоклипа чрез един от следните методи:
a) Изтрийте цялото видео
Для удаления всего видео в базе данных выполните последовательно команды
truncate video_frame; truncate video_sequence;
Ако се появят грешки при изпълнение на командата, повторете заявката с думата cascade в края.
b) Изтриване на цялото видео за определен период
За да изтриете данни за определен ден, изпълнете следните команди:
Показване на дати, за които има видео в базата данни:
select pos::date from video_frame group by pos::date;
Изтриване на видеоклип за конкретен ден:
delete from video_frame WHERE pos::date = '20160523'; delete from video_sequence WHERE first_frame_pos::date = '20160523';
Изтриване на видеоклип за няколко различни дни:
delete from video_frame WHERE pos::date = '20160523' OR pos::date = '20160524' OR pos::date = '20160525'; delete from video_sequence WHERE first_frame_pos::date = '20160523' OR first_frame_pos::date = '20160524' OR first_frame_pos::date = '20160525';
Изтриване на видеоклип за период:
delete from video_frame WHERE pos::date >= '20160523' AND pos::date <= '20160525'; delete from video_sequence WHERE first_frame_pos::date >= '20160523' AND first_frame_pos::date <= '20160525';
където 20160523 е датата на деня, за който искате да изтриете видеоклипа, във формат YYYYMMDD
c) Изтриване на цялото видео за конкретен потребител
За да изтриете данни за конкретен потребител, изпълнете следните команди:
Избройте потребителското име, името на домейна, името на компютъра и количеството видео за тях
SELECT online_session.user_name, online_session.user_domain, online_session.computer_name, pg_size_pretty(sum(octet_length(data))) FROM video_frame JOIN video_sequence ON (video_sequence.id=video_frame.sequence_id) JOIN online_session ON (video_sequence.online_session_id=online_session.id) GROUP BY online_session.user_name, online_session.user_domain, online_session.computer_name ORDER BY sum(octet_length(data)) DESC;
Изтриване на видео по потребител
DELETE FROM video_sequence WHERE id IN( SELECT vs.id FROM video_sequence AS vs JOIN online_session AS s ON(vs.online_session_id=s.id) WHERE s.user_name='Эдуард' AND s.computer_name='win10x64' AND s.user_domain='workgroup' LIMIT 100 );
Тук s.user_name е потребителското име, s.computer_name е името на компютъра, s.user_domain е името на домейна, от който искате да изтриете видеото. Ако някои от параметрите липсват, оставете ги празни в заявката. Показва се и ограничение на операциите (Limit = 100), което може да бъде променено, ако е необходимо.
7. След командите за изтриване изпълнете командата, за да освободите място
vacuum full;