|
@@ -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)
|