测试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 │
└─────────────────────┴───────┴───────┴───────┴───────┴────────┴───────────┘
相关推荐
路远的数据库笔记6 分钟前
SQL Server迁移国产数据库怎么做?九套口岸库零停机割接实战
数据库·经验分享·sqlserver·dba
樱花落木兰8 分钟前
分布式登录实战:Session 会话共享改造,Redis 存储用户登录状态
java·javascript·数据库·redis·分布式·缓存
wuyk55511 分钟前
Python 网络爬虫入门到实战 第 04 章:请求头、UA 伪装、超时、异常处理、基础反爬绕过
开发语言·爬虫·python
流形填表16 分钟前
题库去重实战:基于题干指纹的重复题清理
开发语言·c#
\光辉岁月/19 分钟前
3.java运算符
java·开发语言
kaiyou202623 分钟前
用户研究岗秋招,统计分析能力怎么学习和证明?
数据库·python·学习
知识分享小能手26 分钟前
C++ 学习教程,从入门到精通,string类和标准模板库 — 完整知识点详解(16)
开发语言·c++·学习
qq_4017004130 分钟前
Qt 炫酷曲线,图表,2D/3D开源库
开发语言·qt
liangshanbo121537 分钟前
面试题:线上 JavaScript 报错如何快速定位到源码?
开发语言·javascript·ecmascript
mjhcsp40 分钟前
DeepSeek V4.1 Flash 批量处理效能实测
java·前端·数据库