Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从linux shell读取带有SQL查询的CSV文件_Sql_Linux_Shell_Csv - Fatal编程技术网

从linux shell读取带有SQL查询的CSV文件

从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命令。这是可以编写脚本的,需要一点努力。

我想从shell中读取CSV文件,就像它是SQL数据库表一样

无需将CSV文件内容导入SQL环境,这是否可行? 也许有某种基于linux的工具可以解决这个问题

我知道这听起来是一个棘手的问题,但我正试图避免安装SQL server之类的东西。我有一些限制

有什么线索吗?

请看一看,这是一种用于将文本作为数据库处理的Python工具。默认情况下,它使用空格分隔字段,但
-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 |