测试DuckDB luajit插件读取本地通达信文件

使用李红艳先生开发的luajit插件读取通达信文件lua库,操作步骤如下。

1.准备示例数据

https://github.com/mootdx/mootdx 网页下载tests目录下的sh000001.day、sh688001.lc1、sh688001.lc5文件。

复制代码
wget https://github.com/mootdx/mootdx/archive/refs/heads/master.zip

2.安装luajit插件读取通达信文件lua库, 用luajit_table('tdx', list := '文件名')读取

复制代码
C:\d>duckdb155
DuckDB v1.5.5 (Variegata)
Enter ".help" for usage hints.
memory D load luajit;
memory D SELECT * FROM luajit_module(mode := 'install', sql_name := 'tdx');
┌─────────┬─────────┬─────────┬──────────────────────────────────────┬──────────────────────────────────────┬──────────┐
│   ok    │  mode   │  phase  │               message                │                detail                │ sql_name │
│ boolean │ varchar │ varchar │               varchar                │               varchar                │ varchar  │
├─────────┼─────────┼─────────┼──────────────────────────────────────┼──────────────────────────────────────┼──────────┤
│ true    │ install │ install │ installed 'tdx' (UDF) --- cached at C: │ luajit_table('tdx') or luajit_s('tdx │ tdx      │
│         │         │         │ \Users\lt/.duckdb/luajit-libs/tdx.lu │ ', ...)                              │          │
│         │         │         │ a                                    │                                      │          │
└─────────┴─────────┴─────────┴──────────────────────────────────────┴──────────────────────────────────────┴──────────┘
memory D SELECT split_part(val,'|',1) AS datetime,
                split_part(val,'|',2)::FLOAT AS open,
                split_part(val,'|',3)::FLOAT AS high,
                split_part(val,'|',4)::FLOAT AS low,
                split_part(val,'|',5)::FLOAT AS close,
                split_part(val,'|',6)::BIGINT AS volume,
                split_part(val,'|',7)::DOUBLE AS amount
         FROM luajit_table('tdx', list := 'sh000001.day') limit 5;
┌────────────┬─────────┬─────────┬─────────┬─────────┬──────────┬───────────────┐
│  datetime  │  open   │  high   │   low   │  close  │  volume  │    amount     │
│  varchar   │  float  │  float  │  float  │  float  │  int64   │    double     │
├────────────┼─────────┼─────────┼─────────┼─────────┼──────────┼───────────────┤
│ 2000-02-14 │ 1591.44 │ 1674.13 │ 1587.81 │ 1673.94 │ 43645603 │ 26587693056.0 │
│ 2000-02-15 │ 1709.22 │ 1746.44 │  1663.0 │ 1670.67 │ 52609049 │ 38936428544.0 │
│ 2000-02-16 │ 1674.93 │ 1695.88 │ 1649.69 │  1693.1 │ 37505374 │ 36014215168.0 │
│ 2000-02-17 │ 1734.26 │ 1770.88 │ 1615.62 │ 1640.64 │ 51469905 │ 49915342848.0 │
│ 2000-02-18 │ 1623.96 │ 1668.16 │ 1583.58 │ 1668.09 │ 26813271 │ 26994974720.0 │
└────────────┴─────────┴─────────┴─────────┴─────────┴──────────┴───────────────┘
memory D SELECT split_part(val,'|',1) AS datetime,
                split_part(val,'|',2)::FLOAT AS open,
                split_part(val,'|',3)::FLOAT AS high,
                split_part(val,'|',4)::FLOAT AS low,
                split_part(val,'|',5)::FLOAT AS close,
                split_part(val,'|',6)::BIGINT AS volume,
                split_part(val,'|',7)::DOUBLE AS amount
         FROM luajit_table('tdx', list := 'sh688001.lc1') limit 5;
┌─────────────────────┬───────┬───────┬───────┬───────┬────────┬──────────┐
│      datetime       │ open  │ high  │  low  │ close │ volume │  amount  │
│       varchar       │ float │ float │ float │ float │ int64  │  double  │
├─────────────────────┼───────┼───────┼───────┼───────┼────────┼──────────┤
│ 2021-04-23 09:31:00 │ 36.71 │ 37.02 │ 36.71 │  36.8 │   7000 │ 256647.0 │
│ 2021-04-23 09:32:00 │  36.8 │  36.8 │ 36.75 │ 36.75 │   1100 │  40737.0 │
│ 2021-04-23 09:33:00 │ 36.75 │ 36.75 │ 36.71 │ 36.72 │   5300 │ 194798.0 │
│ 2021-04-23 09:34:00 │ 36.73 │ 36.73 │ 36.63 │ 36.63 │   4100 │ 149628.0 │
│ 2021-04-23 09:35:00 │ 36.66 │ 36.66 │ 36.52 │  36.6 │   9700 │ 355209.0 │
└─────────────────────┴───────┴───────┴───────┴───────┴────────┴──────────┘
memory D SELECT split_part(val,'|',1) AS datetime,
                split_part(val,'|',2)::FLOAT AS open,
                split_part(val,'|',3)::FLOAT AS high,
                split_part(val,'|',4)::FLOAT AS low,
                split_part(val,'|',5)::FLOAT AS close,
                split_part(val,'|',6)::BIGINT AS volume,
                split_part(val,'|',7)::DOUBLE AS amount
         FROM luajit_table('tdx', list := 'sh688001.lc5') limit 5;
┌─────────────────────┬───────┬───────┬───────┬───────┬────────┬───────────┐
│      datetime       │ open  │ high  │  low  │ close │ volume │  amount   │
│       varchar       │ float │ float │ float │ float │ int64  │  double   │
├─────────────────────┼───────┼───────┼───────┼───────┼────────┼───────────┤
│ 2021-06-01 09:35:00 │ 37.69 │ 37.69 │ 36.89 │ 36.93 │  64000 │ 2384077.0 │
│ 2021-06-01 09:40:00 │ 36.96 │ 37.35 │ 36.96 │ 37.35 │  54600 │ 2026959.0 │
│ 2021-06-01 09:45:00 │ 37.35 │ 37.44 │ 37.27 │ 37.31 │  27600 │ 1029482.0 │
│ 2021-06-01 09:50:00 │ 37.31 │  37.4 │  37.2 │  37.2 │  28800 │ 1074137.0 │
│ 2021-06-01 09:55:00 │ 37.23 │ 37.43 │ 37.23 │ 37.36 │  51500 │ 1926873.0 │
└─────────────────────┴───────┴───────┴───────┴───────┴────────┴───────────┘
相关推荐
JavaPub-rodert2 小时前
Docker 安装 MySQL 完整教程:从零部署数据库,到生产环境持久化配置
数据库·mysql·docker
隔窗听雨眠2 小时前
MySQL整库迁移至KaiwuDB完全指南:从数据类型映射到生产切换的系统性实践
数据库·mysql
孙启超2 小时前
【AI开发之Rust】第 3 课:字符串与复合类型 —— 数据怎么放
开发语言·人工智能·后端·rust·llm·transformer
xhbh6662 小时前
中小企业 Redis 运维,如何安全归档 RDB、AOF 备份文件?
运维·数据库·缓存·数据备份·文件备份·同步备份·号码备份
t-think2 小时前
C++ string 类(上)—— string类初识与常用接口详解
开发语言·c++
cpp_learners2 小时前
C++ 实现责任链模式(Chain of Responsibility):从一堆 if-else 到可插拔的处理管道
开发语言·c++·责任链模式
勤奋的树懒2 小时前
从手写 SQL 到 Windows 工具:致远 OA 文件清理实践
数据库·sql·windows server·致远oa
君顾12 小时前
外卖CPS软件开发实战:从系统架构到部署全流程指南
java·开发语言·外卖
笃行3503 小时前
OceanBaseVS金仓:一条 SQL 的两条路——KingbaseES 的性能竞争力从哪来
数据库