Может еще кто скрипт импорта потестит? ...а то у меня наверно не так много трафика, что б он хоть как-то ощутимо продолжительно работал...
checkpoint.sh
Код: Выделить всё
#!/bin/sh
[ -z "$1" ] && exit 1
ipacctctl $1_ip_acct:$1 checkpoint
echo "CREATE TEMPORARY TABLE traffic_tmp (
 date_in timestamp NOT NULL DEFAULT now(),
 ip_from inet NOT NULL,
 s_port int NOT NULL,
 ip_to inet NOT NULL,
 d_port int NOT NULL,
 proto int NOT NULL,
 packets int NOT NULL,
 bytes int NOT NULL,
 unixtime int NOT NULL
);
COPY traffic_tmp (ip_from, s_port, ip_to, d_port, proto, packets, bytes, unixtime) FROM stdin;" >> $1.log
ipacctctl $1_ip_acct:$1 show >> $1.log
echo "\.
SELECT add_traffic('$1');" >> $1.log
psql -f $1.log ng_ipacct -U pgsql 2>/dev/null
ipacctctl $1_ip_acct:$1 clear
cat /dev/null > $1.log
Код: Выделить всё
CREATE TABLE ifaces ( -- таблица с интерфейсами
 id serial,
 title varchar(16) NOT NULL,	-- название интерфейса
CONSTRAINT ifaces_pk PRIMARY KEY (id),
CONSTRAINT ifaces_u1 UNIQUE (title)
);
CREATE TABLE traffic ( -- траффик по интерфейсам
 id serial,
 ifaces_id int NOT NULL,
 ip_from inet NOT NULL,
 s_port int NOT NULL,
 ip_to inet NOT NULL,
 d_port int NOT NULL,
 proto int NOT NULL,
 packets int NOT NULL,	-- количество прошедших пакетов
 bytes int NOT NULL,	-- количество прошедших байт
 date_packet timestamp NOT NULL,	-- время прохождеия пакетов
CONSTRAINT traffic_pk PRIMARY KEY (id),
CONSTRAINT traffic_f1 FOREIGN KEY (ifaces_id) REFERENCES ifaces (id)
);
CREATE OR REPLACE FUNCTION add_traffic(ifaces.title%TYPE) RETURNS int AS $_$
 DECLARE
  titleIN ALIAS FOR $1;
  ifacesID ifaces.id%TYPE;
 BEGIN
  SELECT id INTO ifacesID FROM ifaces WHERE title = titleIN;
  INSERT INTO traffic (ifaces_id, ip_from, s_port, ip_to, d_port, proto, date_packet, packets, bytes)
   SELECT ifacesID AS ifaces_id, ip_from, s_port, ip_to, d_port, proto, abstime(unixtime), sum(packets) AS packets, sum(bytes) AS bytes
   FROM traffic_tmp
   GROUP BY ip_from, s_port, ip_to, d_port, proto, unixtime;
  RETURN 0;
 END;
$_$ LANGUAGE plpgsql;