通过插件导入数据


通过HDF5插件导入

HDF5插件提供了以下方法:

  • hdf5::ls:列出HDF5文件中所有 group 和 dataset 对象
  • hdf5::lsTable:列出HDF5文件中所有 dataset 对象
  • hdf5::hdf5DS:返回HDF5文件中 dataset 的元数据
  • hdf5::loadHdf5:将HDF5文件导入内存表
  • hdf5::loadHdf5Ex:将HDF5文件导入分区表
  • hdf5::extractHdf5Schema:从HDF5文件中提取表结构

下载HDF5插件,再将插件部署到 /server/plugins 目录下。使用以下脚本加载插件:

$ loadPlugin("plugins/hdf5/PluginHdf5.txt")

调用插件方法时需要在方法前面提供namespace,比如调用loadHdf5可以使用hdf5::loadHdf5。另一种写法是:

$ use hdf5
$ loadHdf5(filePath,tableName)

若要导入包含一个Dataset candle_201801的文件candle_201801.h5,可使用以下脚本:

$ dataFilePath = "/home/data/candle_201801.h5"
$ datasetName = "candle_201801"
$ tmpTB = hdf5::loadHdf5(dataFilePath,datasetName)

如果需要指定数据类型导入可以使用hdf5::extractHdf5Schema,脚本如下:

$ dataFilePath = "/home/data/candle_201801.h5"
$ datasetName = "candle_201801"
$ schema=hdf5::extractHdf5Schema(dataFilePath,datasetName)
$ update schema set type=`LONG where name=`volume
$ tt=hdf5::loadHdf5(dataFilePath,datasetName,schema)

如果HDF5文件超过服务器内存,可以使用hdf5::loadHdf5Ex载入数据。

$ dataFilePath = "/home/data/candle_201801.h5"
$ datasetName = "candle_201801"
$ dfsPath = "dfs://dataImportHDF5DB"
$ db=database(dfsPath,VALUE,2018.01.01..2018.01.31)
$ hdf5::loadHdf5Ex(db, "cycle", "tradingDay", dataFilePath,datasetName)

通过ODBC插件导入

ODBC插件提供了以下四个方法用于操作第三方数据源数据:

  • odbc::connect:创建连接。
  • odbc::close: 关闭连接。
  • odbc::query:根据给定的SQL语句查询数据并将结果返回到DolphinDB的内存表。
  • odbc::execute:在第三方数据库内执行给定的SQL语句,不返回结果。

在使用ODBC插件之前,需要安装ODBC驱动程序。

下面的例子使用ODBC插件连接以下SQL Server:

  • IP地址:172.18.0.15
  • 连接用户名:sa
  • 密码:123456
  • 数据库名称: SZ_TAQ

下载插件解压并拷贝 plugins/odbc 目录下所有文件到DolphinDB server/plugins/odbc 目录下,通过下面的脚本完成插件初始化:

$ loadPlugin("plugins/odbc/odbc.cfg")
$ conn=odbc::connect("Driver=ODBC Driver 17 for SQL Server;Server=172.18.0.15;Database=SZ_TAQ;Uid=sa;Pwd=123456;")

创建DolphinDB分布式数据库dfs://dataImportODBC。使用SQL Server中的数据表结构作为DolphinDB数据表的模板,在dfs://dataImportODBC中创建数据库cycle。

$ tb = odbc::query(conn,"select top 1 * from candle_201801")
$ db=database("dfs://dataImportODBC",VALUE,2018.01.01..2018.01.31)
$ db.createPartitionedTable(tb, "cycle", "tradingDay")

从SQL Server中导入数据并保存入cycle表中:

$ tb = database("dfs://dataImportODBC").loadTable("cycle")
$ data = odbc::query(conn,"select * from candle_201801")
$ tb.append!(data);

通过MySQL插件导入

MySQL插件提供了以下接口函数:

  • mysql::connect:创建连接
  • mysql::showTables:列出MySQL数据库中的所有表
  • mysql::extractSchema:获取MySQL数据表的结构
  • mysql::load:把MySQL数据加载到DolphinDB的内存表
  • mysql::loadEx:把MySQL中的数据加载到DolphinDB的分区表

下载插件解压并拷贝 plugins\mysql 目录下所有文件到DolphinDB server的 plugins/mysql 目录下,通过下面的脚本完成插件初始化:

$ loadPlugin("plugins/PluginMySQL.txt")

连接本地MySQL服务器中的employees数据库:

$ conn=connect("127.0.0.1",3306,"root","123456","employees")

确定分区类型和分区方案,创建数据库,用于保存MySQL数据:

$ db=database("dfs://mysql",VALUE,`F`M)

导入数据:

$ pt=loadEx(conn,db,"pt","gender","employees")