数据加载示例
正如 samples/xsql/data_loaders/README.txt 文件中所解释的那样,SQL 中有两个子目录 CME 和 NYSE,其中包含的脚本演示了如何从这两个不同的来源加载历史交易数据。
CME
此示例展示了一个使用用户自定义函数(UDF)实现的数据加载器。目标数据库模式定义了两个类,分别是 TradesSeq 和 TOBSeq,它们包含序列字段。CSV 格式的输入文件包含 CME 格式的交易和交易订单数据。(原始数据来自 CME 示例数据。)
用户定义函数(UDF)从 CSV 文件加载数据,组合带有分腿的交易和订单,创建缓冲区以更高效地处理序列数据,并将这些缓冲区附加到目标数据库序列中。
UDF 存在于一个共享库中,该库导出了 load_cme_trades() 和 load_cme_tob() 这两个函数。这些函数通过 xsql.cfg 配置文件中的以下语句加载到 toxSQL 中:
sql_statements: "
create function load_trades(fname string, book string) returns integer as 'mcocme', 'load_cme_trades';
create function load_tob(fname string, book string) returns integer as 'mcocme', 'load_cme_tob';",
此示例的客户端是一个名为 loadfunc.py 的 Python 程序,它使用远程 SQL 协议。该程序会扫描 2013 下的子目录以查找交易和订单文件,并执行 SQL 语句来加载它们。
运行示例
首先编译UDF:
cd modcme
make
然后在控制台窗口中运行命令文件 server.bat 以启动 xSQL 作为服务器:
server.bat
要在第二个控制台窗口中启动客户端,首先运行命令文件 env.bat 以导出环境变量,然后运行 python 加载数据:
env.bat
python loadfunc.py
NYSE 纽约证券交易所
此示例展示了使用不同机制实现的纽约证券交易所(NYSE)数据加载器。所指示子目录中包含的 NYSE 交易和报价数据来自 http://www.nyxdata.com/data-products/daily-taq(其中说明了数据格式和完整示例文件)。以下子目录中的数据来自所指示的来源:
daily_nbbo: EQY_US_ALL_NBBO_yyyymmdd.zip
daily_quotes: EQY_US_ALL_BBO_yyyymmdd.zip
daily_taq_master: EQY_US_ALL_REF_MASTER_yyyymmdd.zip
daily_trades: EQY_US_ALL_TRADE_yyyymmdd.zip
这些子目录包含示例,演示如何将少量的样本数据文件加载到 SmartEDB 数据库中。(如有需要,可从纽约证券交易所网站下载上述列表中所指的所有数据文件。)
命令文件 load.bat 运行脚本 load.sql,以演示将数据导入与源文件结构相同的表中。命令文件 load2.bat 和脚本 load2.sql 演示将数据导入具有类型转换的表中。
运行示例
First compile the UDF:
cd daily_nbbo
然后在控制台窗口中运行命令文件 server.bat 以启动 xSQL 作为服务器:
server.bat
要在第二个控制台窗口中启动客户端,请运行命令文件 load.bat 或 load2.bat 来加载数据:
load.bat