Browse Source

Merged upstream with local edits - upstream added --create, local added --timezone

Nicki 5 years ago
parent
commit
b7a43acf05
2 changed files with 18 additions and 10 deletions
  1. 4 4
      README.md
  2. 14 6
      csv-to-influxdb.py

+ 4 - 4
README.md

@@ -1,7 +1,7 @@
 # csv-to-influxdb
 Simple python script that inserts data points read from a csv file into a influxdb database.
-**WARNING**
-The database given via the --dbname parameter will drop the database first, then insert the csv data.
+
+To create a new database, specify the parameter ```--create```. This will drop any database with a name equal to the one supplied with ```--dbname```.
 
 ## Usage
 
@@ -27,6 +27,7 @@ optional arguments:
   -p [PASSWORD], --password [PASSWORD]
                         Password.
   --dbname [DBNAME]     Database name.
+  --create              Drop database and create a new one.
   -m [METRICNAME], --metricname [METRICNAME]
                         Metric column name. Default: value
   -tc [TIMECOLUMN], --timecolumn [TIMECOLUMN]
@@ -34,8 +35,6 @@ optional arguments:
   -tf [TIMEFORMAT], --timeformat [TIMEFORMAT]
                         Timestamp format. Default: '%Y-%m-%d %H:%M:%S' e.g.:
                         1970-01-01 00:00:00
-                        Timestamp format with milliseconds: '%Y-%m-%d %H:%M:%S.%f' e.g.:
-                        1970-01-01 00:00:00.000
   --fieldcolumns [FIELDCOLUMNS]
                         List of csv columns to use as fields, separated by
                         comma, e.g.: value1,value2. Default: value
@@ -46,6 +45,7 @@ optional arguments:
   -b BATCHSIZE, --batchsize BATCHSIZE
                         Batch size. Default: 5000.
 
+
 ```
 
 ## Example

+ 14 - 6
csv-to-influxdb.py

@@ -37,16 +37,20 @@ def isinteger(value):
             return False
 
 
-def loadCsv(inputfilename, servername, user, password, dbname, metric, timecolumn, timeformat, tagcolumns, fieldcolumns, usegzip, delimiter, batchsize, datatimezone):
+def loadCsv(inputfilename, servername, user, password, dbname, metric, 
+    timecolumn, timeformat, tagcolumns, fieldcolumns, usegzip, 
+    delimiter, batchsize, create, datatimezone):
 
     host = servername[0:servername.rfind(':')]
     port = int(servername[servername.rfind(':')+1:])
     client = InfluxDBClient(host, port, user, password, dbname)
 
-    #print('Deleting database %s'%dbname)
-    #client.drop_database(dbname)
-    #print('Creating database %s'%dbname)
-    #client.create_database(dbname)
+    if(create == True):
+        print('Deleting database %s'%dbname)
+        client.drop_database(dbname)
+        print('Creating database %s'%dbname)
+        client.create_database(dbname)
+
     client.switch_user(user, password)
 
     # format tags and fields
@@ -137,6 +141,9 @@ if __name__ == "__main__":
     parser.add_argument('--dbname', nargs='?', required=True,
                         help='Database name.')
 
+    parser.add_argument('--create', action='store_true', default=False,
+                        help='Drop database and create a new one.')
+
     parser.add_argument('-m', '--metricname', nargs='?', default='value',
                         help='Metric column name. Default: value')
 
@@ -164,4 +171,5 @@ 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.timezone)
+        args.fieldcolumns, args.gzip, args.delimiter, args.batchsize, args.create, 
+        args.timezone)