将 txt 加载到结构化数组并添加一列文件名中的值
loadtxt to structured array and adding one column with value from filename
我是 python 和 nupmy 的新手。
我必须从 txt 文件中导入一些数据并将其插入到 postgresql 数据库中。
我是这样读取数据的:
type_definitions = ([('StationID', 'S4'), ('East', np.float), ('North', np.float), ('Height', np.float)])
filename = os.path.join(directory, file)
day = file.split('_')[2]
day = DoW.split('.')[0]
DataSet[day] = np.loadtxt(fname=filename, usecols=[0, 1, 2, 3], dtype=type_definitions)
这对我来说没问题。 (它是几个文件循环的一部分。每个“天”是一个文件)
下一步是将 DataSet 值连接到 sql 查询的字符串:
values = ', '.join(map(str, DataSet[day]))
sql = "INSERT INTO tm_utm (day, station, east, north, height) VALUES {}".format(values)
我必须添加到 sql 查询的 'day' 不是文本文件的一部分,但它在文件名中。所以我拆分了 'day'.
的电影名
不幸的是,我没有在第一列值中写入 'day'。我尝试了几种不同的方法,比如向 DataSet 添加数组:
day2 = (np.ones(len(DataSet[Dow]['Stations'])) * int(day))
但是我未能将 day2 数组添加到数据集结构中。
任何建议,如何添加 'day' 值?
谢谢你的帮助!
编辑:
这是 sql 查询的样子。
缺少当天的值。
INSERT INTO tm_utm (day, station, east, north, height) VALUES (b'2547', 32394691.312, 5693210.5467, 264.5246), (b'6578', 32362171.6427, 5702679.4317, 217.2954) ...
好的,我做到了。
不是很优雅,但是很管用。
weekday = int(day)
for i in range(0, len(DataSet[day]['StationID'])-1):
StationID = DataSet[day]['StationID'][i].decode('UTF-8')
East = DataSet[day]['East'][i]
North = DataSet[day]['North'][i]
Height = DataSet[day]['Height'][i]
sql_query = "INSERT INTO tm_utm (day, station, east, north, height) VALUES ({}, \'{}\', {}, {}, {})".format(weekday, StationID, East, North, Height)
print(sql_query)
插入 tm_utm(日、站、东、北、高度)值(21160,'ABFH',32319923.5979,5656881.7123,156.0891)
我是 python 和 nupmy 的新手。
我必须从 txt 文件中导入一些数据并将其插入到 postgresql 数据库中。
我是这样读取数据的:
type_definitions = ([('StationID', 'S4'), ('East', np.float), ('North', np.float), ('Height', np.float)])
filename = os.path.join(directory, file)
day = file.split('_')[2]
day = DoW.split('.')[0]
DataSet[day] = np.loadtxt(fname=filename, usecols=[0, 1, 2, 3], dtype=type_definitions)
这对我来说没问题。 (它是几个文件循环的一部分。每个“天”是一个文件) 下一步是将 DataSet 值连接到 sql 查询的字符串:
values = ', '.join(map(str, DataSet[day]))
sql = "INSERT INTO tm_utm (day, station, east, north, height) VALUES {}".format(values)
我必须添加到 sql 查询的 'day' 不是文本文件的一部分,但它在文件名中。所以我拆分了 'day'.
的电影名不幸的是,我没有在第一列值中写入 'day'。我尝试了几种不同的方法,比如向 DataSet 添加数组:
day2 = (np.ones(len(DataSet[Dow]['Stations'])) * int(day))
但是我未能将 day2 数组添加到数据集结构中。
任何建议,如何添加 'day' 值? 谢谢你的帮助!
编辑: 这是 sql 查询的样子。 缺少当天的值。
INSERT INTO tm_utm (day, station, east, north, height) VALUES (b'2547', 32394691.312, 5693210.5467, 264.5246), (b'6578', 32362171.6427, 5702679.4317, 217.2954) ...
好的,我做到了。 不是很优雅,但是很管用。
weekday = int(day)
for i in range(0, len(DataSet[day]['StationID'])-1):
StationID = DataSet[day]['StationID'][i].decode('UTF-8')
East = DataSet[day]['East'][i]
North = DataSet[day]['North'][i]
Height = DataSet[day]['Height'][i]
sql_query = "INSERT INTO tm_utm (day, station, east, north, height) VALUES ({}, \'{}\', {}, {}, {})".format(weekday, StationID, East, North, Height)
print(sql_query)
插入 tm_utm(日、站、东、北、高度)值(21160,'ABFH',32319923.5979,5656881.7123,156.0891)