我有一个DSS数据库文件,我想使用Python从文件中提取数据库模式。我实际上需要在这个数据库上执行查询,但我无法找到任何好的文档。所以,我决定是否可以提取模式,我可以创建一个SQLite数据库并在那里运行我的实验。
文件内容如下:
5a44 5353 8854 0000 6e04 0000 0700 0000
362d 5146 14a2 2001 85a9 8c00 3037 4a55
4c31 3400 3330 4e4f 5631 3700 3132 3a35
393a 3134 0000 0000 0010 0000 0100 0000
2000 0000 0500 0000 7f00 0000 df10 0000
... ... ... ...
... ... ... ...
请注意。我不熟悉DSS数据库。
任何帮助都将不胜感激。
答案 0 :(得分:0)
如果您在Windows环境中,则该库看起来很有希望。我在Linux环境中,因此无法使用它,但是示例显示了我想做的事情:
答案 1 :(得分:0)
DSS或HEC-DSS是由美国陆军工程兵水文工程中心(HEC)开发的数据库系统。它不是关系数据库,而是旨在更有效地检索和存储不一定与其他数据集互连的大量数据的数据库。 HEC-DSS支持诸如时间序列数据,成对数据(如pandas DataFrame),面向空间的网格化数据等数据类型。 HEC-DSS通过其路径名引用数据集或记录。路径名分为六个部分,并用/ A / B / C / D / E / F /标记为“ A”至“ F”。 HEC-DSS被并入HEC的主要程序中,例如HEC-RAS,HEC-HMS,HEC-RTS等。
HEC已发布Java库和基于Java的可视化实用程序HEC-DSSVue,以查看,编辑或操作HEC-DSS。 Java库可以在Jython中使用,但是Jython缺少numpy,pandas,matplotlib和其他流行的科学库。因此,我于2017年底开始研究pydsstools(HEC-DSS的python库)。目前,pydsstools支持主要的HEC-DSS数据类型和基本的复制,删除操作,并且可以在Windows和Ubuntu等发行版中使用。以下python代码是读取和绘制时间序列数据的示例:
from pydsstools.heclib.dss import HecDss
import matplotlib.pyplot as plt
import numpy as np
dss_file = "example.dss"
pathname = "/REGULAR/TIMESERIES/FLOW//1HOUR/Ex1/"
startDate = "15JUL2019 19:00:00"
endDate = "15JUL2019 21:00:00"
with HecDss.Open(dss_file) as fid:
ts = fid.read_ts(pathname,window=(startDate,endDate),trim_missing=True)
times = np.array(ts.pytimes)
values = ts.values
plt.plot(times[~ts.nodata],values[~ts.nodata],"o")
plt.show()
在GitHub的pydsstools存储库的README部分中提供了用于处理其他数据类型(配对数据,网格化数据)的示例。