一个用SQL处理excel和跨库查询的开源工具分享

2023年 9月 25日 49.1k 0

简介

项目地址: github.com/WenchaoZeng…

一个基于sql的数据处理工具, 可以通过写sql的方式对excel, csv, 跨库mysql表等进行数据处理和加工.

用途

  • 使用SQL分析处理excel或csv文件.
  • 在excel和各个跨库数据库(比如mysql)之间, 进行跨库数据分析.
  • excel数据导入导出.
  • 下载和运行

  • 从 releases 里面下载最新的zip包, 解压到一个特定目录.
  • 准备一个测试的sql文件, 内容为:
  • # h2
    select 1 as a;
    
  • 从命令行进入目录, 执行下面命令:
  • ./start.sh /你的sql文件路径/文件名称.sql
    

    如果是windows命令行的话, 则是:

    start.bat C:\你的sql文件路径\文件名称.sql
    

    正常执行的话, 显示结果类似这样:

    ~/xxxx$ ./start.sh /Users/xxx/test.sql
    执行:  /Users/xxx/test.sql
    ==============================
    SQL: h2
    select 1 as a;
    
    结果集: table, 行数: 1, 耗时: 149毫秒
    ==============================
    导出结果集table
    导出文件路径为: /Users/xxx/SqlDataProcessor/./output/./table.csv
    

    正常情况下结果文件会自动打开的. 如果没有自动打开的话, 可以手动进入output目录, 然后双击里面的csv文件看是不是没有设置默认打开方式. 设置好默认打开方式后, 后续再执行就会自动打开了.

    几个使用场景示例

    场景1: 分析excel数据

    # import /Users/wenchaozeng/Documents/文档资料/测试excel.xlsx
    
    # h2
    select
        count(*) as 有效数据数量
    from $table temp
    where
        字 is not null
        and 字 != '';
    

    场景2: 使用excel生成sql

    # import /Users/wenchaozeng/Documents/文档资料/字库修正/工作表2-表格 1.csv
    
    # local
    select
        *,
        concat('update word set phrase = ''', phrase ,''', sentence = ''', sentence ,''' where course = ''word'' and word = ''', word ,''';') as sql_text
    from $table temp;
    

    场景3: 导入excel数据到数据库

    # import /Users/wenchaozeng/Documents/文档资料/测试excel.xlsx
    
    # local_yuyi
    insert into word(word, course)
    select
        字, 'ENGLISH'
    from$table temp;
    

    场景4: excel和mysql联合分析

    # import /Users/wenchaozeng/Documents/文档资料/测试excel.xlsx
    
    # local_yuyi
    select
        word.word,
        word.course
    from $table temp
    left join word on word.word = 字
    where
        length(word.sentence) > 10
    ;
    

    场景4: mysql跨库数据分析

    # local_yuyi
    select
        word as 本地word,
        sentence as 本地sentence
    from word
    where
        word in ('你', '好')
    ;
    
    # prod_yuyi
    select
        temp.*,
        word as 线上word,
        sentence as 线上sentence
    from $table temp
    left join word on word.word = 本地word
    ;
    

    结语

    这个工具目的不在于生产环境上的数据分析, 目的更多的是作为程序员的个人日常工具, 方便在本地进行数据查询和快速分析, 上手快, 无须搭建平台或数据分析环境.

    感兴趣的朋友们, 欢迎试用和评论反馈 (记得给个star哟 :D).

    相关文章

    JavaScript2024新功能:Object.groupBy、正则表达式v标志
    PHP trim 函数对多字节字符的使用和限制
    新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
    使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
    为React 19做准备:WordPress 6.6用户指南
    如何删除WordPress中的所有评论

    发布评论