我一直在尝试寻找可以导入CSV文件并对其执行SQL操作的工具。
我尝试在SQL Dev 4上进行导入,但是如果没有本地连接,它将无法正常工作。数据很小,因此我不需要笨重的企业级软件-只需完成工作即可。
任何建议将不胜感激!

评论

有一个称为join的标准命令行实用程序;这是规格。它有两个主要警告:1.它只能处理单个定界符,因此CSV中双引号字段不可用(而包含逗号或换行符的双引号字段则被强调了); 2.文件必须在连接列上按字典顺序排序(这意味着按数字排序的字段将引发错误)。尽管存在这些缺点,但值得一提的是它是POSIX指定的,并且几乎在任何地方都如此。

微软的Log Parser功能非常强大,但不幸的是大约15年没有更新。 :)希望他们能开源或发现替代方案。

#1 楼

CSV文件的“问题”是单个“表”没有名称。因此,在对表进行任何SQL查询之前,您需要定义一个表(包括列)并导入CSV文件。

几乎所有数据库浏览器都提供从CSV进行导入的功能。如果您想要一个轻量级的,我可以推荐SQLite浏览器。它是开源的跨平台(Windows,macOS和许多Unix / Linux发行版),并且明确提到了



从CSV文件导入和导出表



作为其功能之一。

评论


SQLite CLI最简单:sqlite.org/cli.html(请参阅“ CSV导入”部分)

–安东·塔拉森科(Anton Tarasenko)
19年5月26日在15:53



#2 楼

看看q


q是一个命令行工具,它允许在CSV / TSV(和任何其他表格文本文件)上直接执行类似SQL的查询。


https://github.com/harelba/q

评论


您知道对商业用户安全吗?

–Vish_er
20年4月13日在17:08

@Vish_er许可证是github上的GPLv3,您也可以联系作者并询问

–本杰明·克鲁兹耶(Benjamin Crouzier)
20年4月14日在14:38

#3 楼

SQLite是一种不错的轻量级工具,受多种语言支持。如果您使用Python,则Python软件包索引(pypi.org)中提供了多种易于使用的工具(包括我编写的https://pypi.org/project/querycsv/)。如果使用R,则可以使用read.csv将数据导入数据帧,并使用sqldf包通过SQL查询该数据。

#4 楼

如果您可以灵活使用某些简单的脚本语言,请尝试-


R脚本-它具有sqldf库,可用于在数据帧上运行sql查询。您只需要将csv读入数据框即可。
Python-pandasql库在pandas数据框上具有相同的功能。


#5 楼

试试csvsql。自2019年3月以来,它是csvsuite(一组用python编写的命令行工具)的一部分,已针对Python 3.7进行了测试。

csvkit工具在《数据科学》一书的命令行中进行了介绍。如果将标准输入传递给csvsql,则表名为stdin。

csvsql --help

Generate SQL statements for one or more CSV files, or execute those statements
directly on a database, and execute one or more SQL queries.

usage: csvsql [-h] [-d DELIMITER] [-t] [-q QUOTECHAR] [-u {0,1,2,3}] [-b]
              [-p ESCAPECHAR] [-z FIELD_SIZE_LIMIT] [-e ENCODING] [-L LOCALE]
              [-S] [--blanks] [--date-format DATE_FORMAT]
              [--datetime-format DATETIME_FORMAT] [-H] [-K SKIP_LINES] [-v]
              [-l] [--zero] [-V]
              [-i {firebird,mssql,mysql,oracle,postgresql,sqlite,sybase}]
              [--db CONNECTION_STRING] [--query QUERY] [--insert]
              [--prefix PREFIX] [--tables TABLE_NAMES] [--no-constraints]
              [--no-create] [--create-if-not-exists] [--overwrite]
              [--db-schema DB_SCHEMA] [-y SNIFF_LIMIT] [-I]
              [FILE [FILE ...]]


还有其他类似的命令行工具,但是我不记得这个名字了其中。

#6 楼

尝试RBQL-它提供了带有Python或Javascript表达式的类似SQL的方言。
您可以从命令行(在pip中使用RBQL)和Rainbow CSV文本编辑器扩展中使用RBQL,该扩展程序提供了不错的GUI,并且可用于VSCode,Atom ,Sublime Text和Vim。而且,您也可以在线尝试RBQL而无需安装任何内容-rbql.org

#7 楼

Google / GCP BigQuery允许您查询尚未导入的CSV文件(https://cloud.google.com/bigquery/external-data-sources)。但是,存储成本和每个查询的成本会很小。
如果最终不得不导入,那么SQLite的答案当然会更好!

#8 楼

如果您使用了esProc SPL,它将更加简单。它直接提供SQL查询和计算文件(CSV,TXT,Excel等)的功能。例如:
$select * from scores.txt where class=10 //Filter
$select class,avg(english) as avg_en from scores.txt   group by class //Group and aggregate
$select sum(S.quantity*P.Price) as total from sales.txt as S join products.txt as P on S.productid=P.ID where S.quantity<=10 //join,filter,aggregate

esProc还是用于处理文件数据源的专业工具。它可以轻松地执行混合计算,可以将各种文件数据(例如TXT,Excel,XML,JSON,CSV等)导入数据库或从数据库中导出。语法简单,符合人们的自然思维,并且比其他方法更简单先进的开发语言。请参考https://esprocforbp.medium.com/direct-query-excel-text-files-using-sql-5315788231e4