# OPC UA alternatives (aka Kepserver)?

**URL:** <https://forum.inductiveautomation.com/t/opc-ua-alternatives-aka-kepserver/16962>\
**Category:** General Discussion\
**Created:** [February 13, 2018, 4:23am UTC](https://forum.inductiveautomation.com/t/opc-ua-alternatives-aka-kepserver/16962 "2018-02-13T04:23:31Z")\
**Posts on this page:** 1\
**Showing post:** 41

<div class="post-metadata">

**Author:** ![accyroy](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/accyroy/32/3386_2.png) [@accyroy](https://forum.inductiveautomation.com/u/accyroy)\
**Post date:** [February 25, 2018, 12:32pm UTC](https://forum.inductiveautomation.com/t/opc-ua-alternatives-aka-kepserver/16962/41 "2018-02-25T12:32:44Z")

</div>

This script will parse your CSV and enter it into the ignition historian with your RTU timestamp.

```auto
#convert the csv into an ignition dataset
import csv
path = system.file.openFile("csv")
if path != None:
	f = open(path,'rb')
	reader = csv.reader(f)
	csvlist = list(reader)
	ds=[]
	row = 0
	for x in csvlist:
		if row == 0:
			headers = x
		if row > 0:
			ds.append(x)
		row += 1
csvdataset = system.dataset.toDataSet(headers, ds)

#parse the dataset and enter the data into the historian
for row in range(csvdataset.rowCount):
	tagname = csvdataset.getValueAt(row,'tag')
	tagvalue = int(csvdataset.getValueAt(row, 'intvalue'))
	tagtimestamp = system.date.fromMillis(long(csvdataset.getValueAt(row, 't_stamp')))
	tagquality = 192
	system.tag.storeTagHistory("ign_historical","default",[tagname],[tagvalue],[tagquality],[tagtimestamp])

```

---

_[View the full topic](https://forum.inductiveautomation.com/t/opc-ua-alternatives-aka-kepserver/16962)._
