从linux shell读取带有SQL查询的CSV文件
我想从shell中读取CSV文件,就像它是SQL数据库表一样 无需将CSV文件内容导入SQL环境,这是否可行? 也许有某种基于linux的工具可以解决这个问题 我知道这听起来是一个棘手的问题,但我正试图避免安装SQL server之类的东西。我有一些限制 有什么线索吗?请看一看,这是一种用于将文本作为数据库处理的Python工具。默认情况下,它使用空格分隔字段,但从linux shell读取带有SQL查询的CSV文件,sql,linux,shell,csv,Sql,Linux,Shell,Csv,我想从shell中读取CSV文件,就像它是SQL数据库表一样 无需将CSV文件内容导入SQL环境,这是否可行? 也许有某种基于linux的工具可以解决这个问题 我知道这听起来是一个棘手的问题,但我正试图避免安装SQL server之类的东西。我有一些限制 有什么线索吗?请看一看,这是一种用于将文本作为数据库处理的Python工具。默认情况下,它使用空格分隔字段,但-d,参数将允许它处理CSV文件 或者,您可以将CSV文件导入SQLite,然后对其运行SQL命令。这是可以编写脚本的,需要一点努力。
-d,
参数将允许它处理CSV文件
或者,您可以将CSV文件导入SQLite,然后对其运行SQL命令。这是可以编写脚本的,需要一点努力。还有(部分)
它不仅可以在给定的csv上运行sql(在后台将其转换为sqlite),还可以转换并插入到许多受支持的sql数据库中
这里有示例命令(也在中):
显示如何联接三个表(中提供)
(也使用部分格式设置)
投入
csvsql
产生:
| CDTitle | Location | Artist |
| -------- | --------- | ------- |
| CDTitle1 | Location1 | Artist1 |
| CDTitle2 | Location2 | Artist1 |
| CDTitle3 | Location1 | Artist2 |
| CDTitle4 | Location2 | Artist2 |
你到底想用这个文件做什么?您想查询它吗?您想从中获取某些数据吗?对于此类任务,没有经典的“unix工具”。但是许多语言(也把它们看作是“shell”)向这个方向提供了一些东西。查找可以使用csv文件作为后端的数据库客户端。这将允许您通过一个小脚本访问文件内容,而不必将文件导入到某些sql server(如sqlite)中
$ csvlook csv_inputs/CDs.csv
| CDTitle | ArtistID | LocID |
| -------- | -------- | ----- |
| CDTitle1 | A1 | L1 |
| CDTitle2 | A1 | L2 |
| CDTitle3 | A2 | L1 |
| CDTitle4 | A2 | L2 |
$ csvlook csv_inputs/Artists.csv
| ArtistID | Artist |
| -------- | ------- |
| A1 | Artist1 |
| A2 | Artist2 |
$ csvlook csv_inputs/Locations.csv
| LocID | Location |
| ----- | --------- |
| L1 | Location1 |
| L2 | Location2 |
$ csvsql --query 'SELECT CDTitle,Location,Artist FROM CDs JOIN Artists ON CDs.ArtistID=Artists.ArtistID JOIN Locations ON CDs.LocID = Locations.LocID' "$@" | csvlook
| CDTitle | Location | Artist |
| -------- | --------- | ------- |
| CDTitle1 | Location1 | Artist1 |
| CDTitle2 | Location2 | Artist1 |
| CDTitle3 | Location1 | Artist2 |
| CDTitle4 | Location2 | Artist2 |