如何将HDF5中的多个表一次性转换为DolphinDB数据库的分布式表

发布于 2022-09-12 13:38:00 字数 287 浏览 33 评论 0

在使用hdf5::loadHDF5Ex将HDF5文件中的数据集转换为DolphinDB数据库的分布式表时,使用查询函数:

dataFilePath="/home/user/data/example.hdf5"
hdf5::lsTable(dataFilePath)

看到这一份HDF5文件下包含了许多个表,如图所示:
image
有没有函数可以一次性将这些表转换为DolphinDB数据库的分布式表?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

岁月静好 2022-09-19 13:38:00

使用HDF5插件将HDF5文件导入DolphinDB数据库的分布式表的函数是:
hdf5::loadHDF5Ex(dbHandle,tableName,[partitionColumns],fileName,datasetName,[schema],[startRow],[rowNum],[tranform])

参数

  • dbHandle与tableName: 若要将输入数据文件保存在分布式数据库中,需要指定数据库句柄和表名。
  • partitionColumns: 字符串标量或向量,表示分区列。当分区数据库不是SEQ分区时,我们需要指定分区列。在组合分区中,partitionColumns是字符串向量。
  • fileName: HDF5文件名,类型为字符串标量。
  • datasetName: dataset名称,即表名,可通过ls或lsTable获得,类型为字符串标量。
  • schema: 包含列名和列的数据类型的表。如果我们想要改变由系统自动决定的列的数据类型,需要在schema表中修改数据类型,并且把它作为loadHDF5Ex函数的一个参数。
  • startRow: 读取HDF5数据集的起始行位置。若不指定,默认从数据集起始位置读取。
  • rowNum: 读取HDF5数据集的行数。若不指定,默认读到数据集的结尾。
  • tranform: 一元函数,并且该函数接受的参数必须是一个表。如果指定了transform参数,需要先创建分区表,再加载数据,程序会对数据文件中的数据执行transform参数指定的函数,再将得到的结果保存到数据库中。

函数使用

将HDF5文件中的数据集转换为DolphinDB数据库的分布式表,然后将表的元数据加载到内存中。读取的行数为HDF5文件中定义的行数,而不是读取结果中的DolphinDB表的行数。

将某一个HDF文件中的前600个表批量写入DolphinDB数据库的分布式表的示例代码如下:

dfsPath = "dfs://hdf5_example2"
if(existsDatabase(dfsPath)){
    dropDatabase(dfsPath)
}
db = database(dfsPath,HASH, [SYMBOL,10]) 
dataFilePath = "/home/user/data/comm-ticks.hdf5"
t = hdf5::lsTable(dataFilePath)
for(i in 0:600){
    datasetName = t[i,0]
    hdf5::loadHDF5Ex(db, "hdf5_exmaple", "instrument", dataFilePath,datasetName)
    dfsTable=loadTable(dfsPath,"hdf5_exmaple")
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文