diff --git a/attrlogimport.py b/attrlogimport.py index 5a0744a..4f35401 100755 --- a/attrlogimport.py +++ b/attrlogimport.py @@ -2,6 +2,9 @@ import os import re import sys +from datetime import datetime +from zoneinfo import ZoneInfo +from pytz import timezone import psycopg @@ -42,18 +45,24 @@ def create_or_find_device_id(name): def parse_attrlog_file(filename, device_id=None): + tz = timezone("Europe/Tallinn") + utc = timezone("UTC") fd = open(filename) file_size = fd.seek(0, os.SEEK_END) fd.seek(0) while fd.tell() != file_size: line = fd.readline() line_parts = [p for p in line.strip().split(";") if p.strip()] - dt = line_parts.pop(0)+"+0200" + #dt = line_parts.pop(0)+"+0200" + dt = datetime.strptime(line_parts.pop(0), "%Y-%m-%d %H:%M:%S")#.replace(tzinfo=tz) + dtz = dt.replace(tzinfo=tz) + dtu = dt.astimezone(utc) + print(dt, dtz, dtu, sep='; ') while line_parts: id = int(line_parts.pop(0)) norm = int(line_parts.pop(0)) raw = int(line_parts.pop(0)) - yield dt, id, norm, raw, device_id + yield dtu, id, norm, raw, device_id if fd.tell() % 100 == 0: print(f"{int((fd.tell() / file_size)*100):>5}%", end='\r') print() @@ -65,9 +74,15 @@ def import_attrlog_file(filename): device_id = create_or_find_device_id(drive_name) with conn.cursor() as cur: cur.execute("START TRANSACTION") - with cur.copy("copy attrlog (time, id, norm, raw, device_id) FROM STDIN") as copy: - for row in parse_attrlog_file(filename, device_id): - copy.write_row(row) + for row in parse_attrlog_file(filename, device_id): + cur.execute(""" + INSERT INTO attrlog (time, id, norm, raw, device_id) + VALUES (%s, %s, %s, %s, %s) + """, row) + # with cur.copy("copy attrlog (time, id, norm, raw, device_id) FROM STDIN") as copy: + # for row in parse_attrlog_file(filename, device_id): + # #print(row) + # copy.write_row(row) cur.execute("COMMIT")