lua(实现代码(1)):使用lua将excel中的配置数据生成sql文件

这是一个Lua程序,用于将含有特定前缀的Excel表格数据转换为SQL文件,方便直接导入数据库。程序利用luacom组件,仅适用于Windows环境。它首先获取Excel文件中的所有符合前缀的表格,然后读取每张表的列名、类型,生成相应的SQL创建表语句,并插入数据。程序还包括数据类型转换、错误处理和数据验证功能。
摘要由CSDN通过智能技术生成

本程序主要用于游戏编程等相关项目中,产品人员使用excel设计数据之后直接将相关数据生成sql,可以导入数据库

excel格式及相关的使用方法,请下载数据包http://download.csdn.net/download/wentianyao/9401274

该库使用了luacom组件所以只能在windows使用


-- excel文件解析成sql文件
-- ws
-- 2015.5

------------------------------------------------------------------------
--配置部分
-- 生成sql目标文件的前缀
local FilePrefix = "conf_"
-- 识别excel中表的前缀
local TablePrefix = "conf_"

------------------------------------------------------------------------
-- 加载库文件
package.path=package.path..";..\\?.lua;..\\..\\scripts\\?.lua"
require("luacom")
require("json")
local lfs = require"lfs"    -- 加载文件处理库

------------------------------------------------------------------------
local exl2sql={}

-- 设置类型长度 语句配置
--                    数据类型        创建表的时候用(属性创建语句)               数据为空的时候的替换数据
exl2sql.STRINGTYPE ={["UINT11"] =     {"int(11) unsigned NOT NULL DEFAULT '0'", 0},
           ["INT11"] =     {"int(11) NOT NULL DEFAULT '0'", 0},
           ["INT32"] =     {"int(32) NOT NULL DEFAULT '0'", 0},
           ["INT64"] =     {"int(64) NOT NULL DEFAULT '0'", 0},
           ["STRING32"] =    {"varchar(32) DEFAULT NULL", "\'\'"},   
           ["STRING64"] =    {"varchar(64) DEFAULT NULL", "\'\'"},
           ["STRING128"] =   {"varchar(128) DEFAULT NULL", "\'\'"},
           ["STRING256"] =   {"varchar(256) DEFAULT NULL", "\'\'"},
           ["STRING512"] =   {"varchar(512) DEFAULT NULL", ""},
           ["STRING1024"] =   {"varchar(1024) DEFAULT NULL", "\'\'"},
           ["STRING2048"] =   {"varchar(2048) DEFAULT NULL", "\'\'"},
           ["DATETIME"] =   {"datetime default '0000-00-00 00:00:00'", "\'\'"},
           ["JSON256"] =    {"varchar(256)  DEFAULT NULL", "\'\'"},
           ["JSON1024"] =    {"varchar(1024) DEFAULT NULL", "\'\'"},
           ["JSON2048"] =    {"varchar(2048) DEFAULT NULL", "\'\'"}}


-- 字符串的处理“^%s”表示匹配所有非s里面的数据,*表示匹配前一个字符串0次或多次,(.-)表示匹配.或者-,%s*表示0次或多次匹配s
function exl2sql.trim(s)
  return s:match "^%s*(.-)%s*$"
end


-- 将字符串s中的符合tMode的子串替换为tReplace
function exl2sql.escape(s)
    local tMode="[%z\'\"

\\\26\b\n\r\t]"
    local tReplace={
        ['\0']='\\0',
        ['\'']='\\\'',
        ['\"']='\\\"',
        ['\\']='\\\\',
        ['\26']='\\z',
        ['\b
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值