查询 CSV 文件

J. *_*fer 30 csv query

有谁知道一个简单的工具可以打开一个 CSV 文件并让您对其进行基本的 SQLesque 查询?就像各种图形工具一样,易于使用。

我知道我可以编写一个小脚本来将 CSV 导入 SQLite 数据库,但是因为我想其他人在我之前想到了这一点,所以我只想询问是否存在。促使这个问题的原因是我对 Excel 有限的过滤功能感到沮丧。

也许其他一些数据可视化操作工具会提供类似的功能。

免费或 OSS 是首选,但我愿意接受任何建议。

编辑:

我真的更喜欢一些关于如何执行以下操作的清晰教程,而不仅仅是“使您的工作表成为 ODBC 条目”或“使用 ODBC 文件编写程序”,或者更多关于要使用的应用程序的想法。注意:我不能使用 MS Access。

另一个编辑:

我仍然对使用 SQLite 的解决方案持开放态度。我的平台是一台半老式的 Win2k 笔记本电脑,上面有一个 P4。它非常慢,因此资源轻的解决方案是理想的,并且可能会获胜。

Lud*_*erl 34

我认为OpenOffice.org 数据库可以做你想做的。它是这样工作的。

  1. 启动打开 Office.org 数据库,它显示“数据库向导

  2. 选择“连接到现有数据库:文本

    在此处输入图片说明

  3. 指定文本文件的路径以及分隔符等详细信息。

    在此处输入图片说明

  4. 创建和执行查询

    在此处输入图片说明

如果您曾经使用过 Microsoft Access,您会发现 GUI 很熟悉。


如果您可以不用 GUI,那么总是可以使用传统的 UNIX 命令。我经常使用它们对(小)CSV 文件进行简单的查询。下面是它的工作原理:

clause      operation   command
-------------------------------
from             join     `join`
where     restriction     `grep`
order by           --     `sort`
group by  restriction      `awk`
having    restriction     `grep`
select     projection      `cut`
distinct  restriction     `uniq`
limit     restriction     `head`
offset    restriction     `tail`
Run Code Online (Sandbox Code Playgroud)


sva*_*agt 15

你试过LogParser吗?

日志解析器是一种功能强大的多功能工具,它提供对基于文本的数据(例如日志文件、XML 文件和 CSV 文件)以及 Windows® 操作系统上的关键数据源(例如事件日志、注册表、文件系统和 Active Directory®。您告诉 Log Parser 您需要什么信息以及您希望如何处理这些信息。您的查询结果可以在基于文本的输出中进行自定义格式,也可以保留到更专业的目标,如 SQL、SYSLOG 或图表。

大多数软件旨在完成有限数量的特定任务。Log Parser 是不同的......它可以使用的方式数量仅受用户的需求和想象力的限制。使用 Log Parser,世界就是您的数据库。

一个教程(和另一个在使用SQL像CSV的查询语言)文件,我发现使用谷歌

示例查询:

logparser -i:CSV "SELECT TOP 10 Time, Count INTO c:\logparser\test\Chart.GIF 
FROM c:\logparser\test\log.csv ORDER by Time DESC" -charttype:bar3d
Run Code Online (Sandbox Code Playgroud)

  • 更多例子在 http://www.codinghorror.com/blog/archives/000369.html 不错;太糟糕了,它只是 Windows。 (2认同)

fre*_*tje 13

您可以使用 ODBC 查询文本文件:

使用 ODBC 数据提供程序访问文本文件

请注意,您不需要 MS Access 来执行此操作,上面链接中的教程仅使用 MS Access 创建文本文件,但由于您已经有了文本文件,请向下滚动一半,然后从您看到的位置开始教程标题访问文本文件

更新:我自己在 .csv 文件上创建了一个 DSN,以便能够创建这个分步教程......它来了:

  • 确保您的 .csv 文件位于其自己的目录中,没有其他任何内容。
  • 打开“ODBC数据源管理器”(开始——控制面板——管理工具——数据源(ODBC))。
  • 转到文件 DSN 选项卡,然后单击“添加...”。
  • 从列表中选择“Microsoft Text Driver (*.txt, *.csv)”,然后单击“下一步 >”。
  • 为您的文件数据源命名(例如“测试”),然后单击“下一步 >”。
  • 单击“完成”(此后会出现一个对话框,其中“数据源名称”和“描述”字段确实是灰色的。这是正常的。不用担心。
  • 取消选中“使用当前目录”复选框。“选择目录”按钮将被启用。
  • 单击“选择目录”按钮并导航到您在第一步中放置 .csv 文件的文件夹。
  • 单击“选项>>”按钮。
  • 单击“定义格式...”按钮。
  • 在左侧的“表格”列表中,选择您的 .csv 文件并单击“猜测”按钮。(这将分析您的 csv 文件并为您的 .csv 文件中的每一列创建一个适当的字段。)
  • 浏览右侧列表中生成的列 (F1,F2,...),为它们指定有意义的名称并设置适当的数据类型(有时猜测并不总是正确的)。
  • 一切设置正确后,单击“确定”(2 次)。

此时您应该有一个文件 DSN,您可以使用它通过 ODBC 访问您的 .csv 文件。如果您检查放置 .csv 文件的文件夹,您将看到一个 schema.ini 文件,其中包含您刚刚创建的配置。当您有多个 .csv 文件时,每个文件对应一个表,每个表将在 schema.ini 文件中有一个 [ filename .csv] 块,其中定义了不同的列...您还可以创建/更改该架构.ini 文件直接在文本编辑器中,而不是使用上述 GUI。

至于您的额外问题“如何使用查询工具连接到此 ODBC 提供程序”:
我有一个我很久以前自己编写的工具,但不符合发布条件。但是在谷歌上快速搜索了odbc-view,这是一个免费软件工具,可以满足您的需求。
我下载并安装了该工具。
启动工具后:

  • 单击“数据源...”。
  • 选择您之前创建的文件数据源(例如“测试”)。
  • 在查询窗格中键入“select * from [ filename .csv]”。
  • 单击“执行”。

您现在应该会在下方窗格中看到 .csv 文件的内容。
希望这会有所帮助...让我知道你是怎么做的,或者如果你需要进一步的帮助。


Chr*_*ian 8

我喜欢使用R快速访问 csv 文件。虽然该语言不是直接的 SQL,但您可以使用 R 中的简单命令完成所有这些事情。R 还为您提供制作精美图表的能力和许多其他功能。


Mar*_*son 7

我发现实现这一点的最简单方法是使用 SQLite 的内置 CSV 导入功能:

  1. sqlite3 mydatabase.sqlite
  2. sqlite> .mode csv
  3. sqlite> .import mydata.csv <tablename>

现在您有了一个可以随意查询的工作数据库。我也发现上面的性能很好,我在 10-15 秒内只导入了 300 万行。


小智 5

您始终可以将文件读入 Excel 并通过 ODBC 将 Excel 用作数据源并对其运行查询。

  • @sheepsimulator:Excel 只是打开 csv 文件......一旦你有了一个 excel 文件,你就可以像查询文本文件一样使用 ODBC 查询它(见下面我的回答)。 (2认同)

Ste*_*erg 5

我发现了一个小型的非图形应用程序可以执行此操作:csvsql

文档在这里

  • `sqlite3`(读取 SQLite 数据库的命令行应用程序)具有对导入文件的内置支持 - 请参阅 http://www.sqlite.org/sqlite.html 上的 .separator 和 .import 命令 (2认同)