使用 Shell 脚本运行 SQL 查询并返回 CSV 格式的输出

Posted

技术标签:

【中文标题】使用 Shell 脚本运行 SQL 查询并返回 CSV 格式的输出【英文标题】:Running SQL Queries using Shell Script and get back the output in CSV Format 【发布时间】:2020-04-23 21:03:26 【问题描述】:

我想使用 shell 脚本自动化包含多个 SQL 查询的 SQL 文件,同时以 .csv 格式文件获取它们的输出。

还有一个问题!这些查询将有一些可变部分,即它们会改变并取决于用户输入

例如:

SELECT NAME, CITY, ADDRESS FROM DATA WHERE COUNTRY = 'USA'

这里我不希望它总是美国。那么有没有一种方法可以提供 COUNTRY 作为 Shell 脚本中的用户输入?

【问题讨论】:

你使用的是什么 SQL 服务器? @Mark Hi,它的 Oracle SQL Server 【参考方案1】:

您可以尝试使用 Oracle SQL*Plus 替换变量。

这样的SQL脚本“demo.sql”

SPOOL some.csv APPEND
set colsep ','
SELECT NAME, CITY, ADDRESS FROM DATA WHERE COUNTRY = '&Country';
SPOOL OFF

然后像这样运行脚本

sqlplus -S username/pass @demo.sql

系统会提示您输入“国家/地区”

Enter value for Country:

然后输入一些内容并按 Enter。 SQL 已执行,将得到一些用逗号分隔的 .csv 文件。

【讨论】:

谢谢!会试试这个,让你知道

以上是关于使用 Shell 脚本运行 SQL 查询并返回 CSV 格式的输出的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 UNIX shell 脚本并行运行一个进程多次?

如何在 shell 脚本中运行 SQL 查询时获得类似 SQLPLUS 的输出

shell脚本调JAVA程序,获取JAVA程序返回值并echo输出

如何避免作为 sql 查询输出的一部分返回的字符串值被拆分为 bash/shell 脚本中数组中的不同字段

shell脚本判断进程是不是存在,并重新启动

访问 sqlplus 的 Shell 脚本