当前位置: 首页 > 面试题库 >

简单,快速的SQL查询平面文件

东郭子默
2023-03-14
问题内容

有谁知道使用类似SQL的声明性查询语言来提供简单,快速的平面文件查询的工具吗?我宁愿不支付将文件加载到数据库中的开销,因为输入数据通常在查询运行后立即被抛出。

考虑数据文件“ animals.txt”:

dog 15
cat 20
dog 10
cat 30
dog 5
cat 40

假设我想为每只独特的动物提取最高价值。我想写一些类似的东西:

cat animals.txt | foo "select $1, max(convert($2 using decimal)) group by $1"

我可以使用sort以下方法获得几乎相同的结果:

cat animals.txt | sort -t " " -k1,1 -k2,2nr

而且我总是可以awk从那里开始的,但是awk当一种类似SQL的语言似乎可以如此干净地解决问题时,这一切都让我感到有些隔((无法抗拒)。

我考虑过为SQLite编写一个包装程序,该包装程序将根据输入数据自动创建一个表,并且我已经考虑在单处理器模式下使用Hive,但我不禁感到以前已经解决了这个问题。我想念什么吗?此功能是否已由其他标准工具实现?


问题答案:

我从未设法找到令人满意的答案,但是至少使用uniqs“ -f”选项确实找到了解决玩具问题的方法,但我一直没有意识到:

cat animals.txt | sort -t " " -k1,1 -k2,2nr \
| awk -F' ' '{print $2, " ", $1}' | uniq -f 1

awk如果输入文件是按相反顺序创建的,则显然可以完全跳过上面的部分。

不过,我仍然对类似SQL的工具抱有希望。



 类似资料:
  • 问题内容: 我正在使用C#在SQL数据库中进行一些繁重的工作。 我不断收到以下超时异常: 超时时间已到。在操作完成之前超时或服务器没有响应。该语句已终止。 我运行了大量查询(超过10万个查询),而导致该异常的并不是任何一个特定的查询-有时我会设法无一例外地完成所有这些查询。 一些例外来自作为较大事务的一部分运行的查询,某些例外来自独立运行的查询。 当我直接在SQL Server Managemen

  • 问题内容: 一个 创建视图的速度比查询本身快(以便具有相同的resultSet): ? 对于视图来说,是否使用某种类型的缓存使其比简单查询更快,这对我来说还不是很清楚。 问题答案: 是的 ,可以为视图分配聚簇索引,并且当它们这样做时,它们将存储临时结果,这些结果可以加快结果查询的速度。 更新:至少三个人对我投了反对票。出于所有应有的尊重,我认为它们是错误的;Microsoft自己的文档非常清楚地表

  • 问题内容: 我创建了一个新文件。所谓 然后在那里我做: 我想在另一个class()中使用它, 很好,但是当我深入研究错误时。 问题答案: 您不能只是拥有一个init。该变量必须在类顶层声明。 使用单例的示例: 当需要在另一个类中使用单例时,只需在另一个类中执行此操作: 按照Martin R和Caleb的评论进行更新: 我已将初始化程序设为私有。它在其他Swift文件中阻止的初始化,从而只能通过使用

  • 问题内容: 我有一个带有自定义TreeModel和自定义TreeRenderer的JTree。树模型包含一堆不同类型的对象。这些类型之一的显示方式与其他类型不同:显示的文本是对象的两个字段的串联。当我编辑单元格时,我想用编辑后的文本更新这些字段之一。到目前为止,我的工作情况还不错。 我的问题:当您在编辑时显示的文本是2个字段的完整串联值时,即使您实际上只是在编辑其中一个字段,也令人困惑。因此,当用

  • 问题内容: 假设这是一个销售相机的网站。这是我的实体(表): 事情是在相机和功能之间,我之间存在多对多关系,所以我有一张额外的桌子: 因此,查询很简单: 如何获得所有具有1,2和3功能的相机? 这就像构造一个位图索引。 您可以用来测试解决方案是否正确的数据 以下是查询和预期结果: 显示所有具有功能1,2和3: C1* 的相机 * 显示所有具有功能1,2和4的相机: C2 显示所有具有功能1和2的相

  • 问题内容: 我陷入了涉及将水平行转换为垂直行的SQL查询(SQL Server) 以下是我的数据 转换后,该表应为 关于此的任何输入将有所帮助? 我正在尝试在分区上玩耍。但是它以某种方式不起作用!!! 谢谢 !!! 问题答案: 您可以使用: 或: