测试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 │
└─────────────────────┴───────┴───────┴───────┴───────┴────────┴───────────┘
相关推荐
拓人间精准客1 小时前
2025–2026 ToB 精准拓客实战手册:用“企业数据画像 + 动态筛选“击穿七大行业获客内卷
大数据·数据库·人工智能
杨云龙UP1 小时前
Toad for Oracle 调整表空间 Datafile 大小:Usage、Used Pct of Max 与 RESIZE 实战
linux·运维·服务器·数据库·oracle·dba·数据库运维
老一岁1 小时前
c问题总结(2)
c语言·开发语言
Ming_studying1 小时前
Python批量压缩图片:支持JPG_PNG_WebP、尺寸限制与CSV报告
开发语言·图像处理·python·pillow·图片压缩
风月说与山鬼1 小时前
JS闭包详解
开发语言·javascript
何以解忧,唯有..1 小时前
Python协程详解:从生成器到async/await的完整指南
开发语言·python
奶茶树1 小时前
【C++】13. C++11新特性【上】
c语言·开发语言·c++·git·github
码域空间1 小时前
锁住了检查,锁不住延迟——MySQL 读写分离架构下双重检查模式失效实录
数据库·mysql·架构
SomeB1oody1 小时前
【RustyML入门】7.4. 按需裁剪与模块化集成
开发语言·后端·机器学习·rust·教程