q:一个可直接在 CSV/TSV文件上执行SQL的开源项目

  • q 让你把文本当数据库

q让你直接在CSVs/TSVs(逗号分割文件/制表分割文件)或其他表格式的文本文件上运行像SQL一样的查询,查询操作包括joins 或其他SQL操作,支持自动字段类型和名字的检测。

  • 概览   

你曾经是否盯着屏幕上的文本文件,希望你可以像对数据库一样从它上面查询到你想要的一切数据,我好多次都遇到这个情形,最终我意识到我不是想把它变成数据库,而是对它进行SQL操作。

SQL是针对数据的声明式语言,声明式编程告诉机器做什么,至于怎么做到的,你可以不用管。这也是SQL强大的原因。在SQL看来,数据就是数据,而不是二进制位,字节或字符。

这个工具就是旨在在文本文件和SQL操作上架起一道桥梁。

q允许在表格式文本上执行SQL查询,像join操作和子查询。

你可以使用 gitter chat room  直接联系我,我尽量都在线。

  • 亮点
  1. 无缝的多表关联查询,也就是JOIN操作,到时把数据表名换成文件名,也可以终端输入。
  2. 支持自动字段类型和名字的检测
  3. 多种解析模式,宽松模式/严格模式,宽松模式让你轻松的解析像日志文件一样的半结构化的数据。
  4. 标准安装,RPM, Homebrew (苹果机子上). Debian 的安装包马上就来。当字段值中包含有半角逗号(引用“”)。
  5. 完全UTF-8字符支持,或其他字符集。
  6. 压缩文件的处理
  7. 输出支持分隔符配对和选择
  8. 美化输出格式
  9. RPM安装时附带man帮助手册
  •  安装

目前的稳定版本是1.3.0。

除了python >= 2.5没有其他要求。

  • Mac 用户

直接运行 brew install q.

  • 手动安装(非常简单,因为没有依赖)
  1.  下载q的安装文件到已经在PATH路径的文件中
  2. 使文件可执行
  •  基于RPM的linux发行版
  1. 下载RPM
  2. 使用rpm -ivh <rpm-name>.命令安装

RPM 包括man手册, 只要运行man q。

  •  使用

q的基本使用很简单:q <flags> <query>,但其实这中间隐藏很多特性,你可以使用flags选项来使用。

最简单用例:q “SELECT * FROM myfile” ,打印出全部文件。

  • 局限
  1. 不检查数据大小边界
  2. 文件名带有空格还不行,我正在改进
  • 未来打算
  1.  让数据加载更快
  2. 可以和外部数据库同时使用
  3. 更真实的SQL支持,智能执行查询语句
  4. 智能批操作插入数据库
  5. 更全的子查询
  6. 提供除了SELECT – INSERT 和 CREATE TABLE SELECT更多操作
  •  联系

我们欢迎任何对这个工具的反馈建议和批评,当然提交代码是最好的。

Harel Ben-Attia, harelba@gmail.com@harelba 在推特上。

收藏 评论

关于作者:sunbiaobiao

(新浪微博:@sunbiao将军) 个人主页 · 我的文章 · 10

相关文章

可能感兴趣的话题



直接登录
跳到底部
返回顶部