Browse Source

Added -tz command option to specify timezone of data if not in UTC.

Nicki 5 years ago
parent
commit
3b42b3e2e6
1 changed files with 13 additions and 4 deletions
  1. 13 4
      csv-to-influxdb.py

+ 13 - 4
csv-to-influxdb.py

@@ -4,10 +4,13 @@ import gzip
 import argparse
 import csv
 import datetime
+from pytz import timezone
 
 from influxdb import InfluxDBClient
 
-epoch = datetime.datetime.utcfromtimestamp(0)
+epoch_naive = datetime.datetime.utcfromtimestamp(0)
+epoch = timezone('UTC').localize(epoch_naive)
+
 def unix_time_millis(dt):
     return int((dt - epoch).total_seconds() * 1000)
 
@@ -34,7 +37,7 @@ def isinteger(value):
             return False
 
 
-def loadCsv(inputfilename, servername, user, password, dbname, metric, timecolumn, timeformat, tagcolumns, fieldcolumns, usegzip, delimiter, batchsize):
+def loadCsv(inputfilename, servername, user, password, dbname, metric, timecolumn, timeformat, tagcolumns, fieldcolumns, usegzip, delimiter, batchsize, datatimezone):
 
     host = servername[0:servername.rfind(':')]
     port = int(servername[servername.rfind(':')+1:])
@@ -59,7 +62,10 @@ def loadCsv(inputfilename, servername, user, password, dbname, metric, timecolum
     with open(inputfilename, 'r') as csvfile:
         reader = csv.DictReader(csvfile, delimiter=delimiter)
         for row in reader:
-            timestamp = unix_time_millis(datetime.datetime.strptime(row[timecolumn],timeformat)) * 1000000 # in nanoseconds
+            datetime_naive = datetime.datetime.strptime(row[timecolumn],timeformat)
+            datetime_local = timezone(datatimezone).localize(datetime_naive)
+
+            timestamp = unix_time_millis(datetime_local) * 1000000 # in nanoseconds
 
             tags = {}
             for t in tagcolumns:
@@ -140,6 +146,9 @@ if __name__ == "__main__":
     parser.add_argument('-tf', '--timeformat', nargs='?', default='%Y-%m-%d %H:%M:%S',
                         help='Timestamp format. Default: \'%%Y-%%m-%%d %%H:%%M:%%S\' e.g.: 1970-01-01 00:00:00')
 
+    parser.add_argument('-tz', '--timezone', default='UTC',
+                        help='Timezone of supplied data. Default: UTC')
+
     parser.add_argument('--fieldcolumns', nargs='?', default='value',
                         help='List of csv columns to use as fields, separated by comma, e.g.: value1,value2. Default: value')
 
@@ -155,4 +164,4 @@ if __name__ == "__main__":
     args = parser.parse_args()
     loadCsv(args.input, args.server, args.user, args.password, args.dbname, 
         args.metricname, args.timecolumn, args.timeformat, args.tagcolumns, 
-        args.fieldcolumns, args.gzip, args.delimiter, args.batchsize)
+        args.fieldcolumns, args.gzip, args.delimiter, args.batchsize, args.timezone)