新手问题:我有FreeTDS工作和查询Microsoft SQL Server 2008 r2 db,来自一个薄荷linux vm,阅读inter-webs,主要是stackoverflow,提到我应该使用sqsh也使用FreeTDS,{{ 3}},我不明白什么是sqsh,除了我认为某种类型的cli之外,因为我可以使用FreeTDS来访问数据库..任何清除它的信息都将不胜感激。
答案 0 :(得分:4)
我过去经常使用sqsh。这真的很有帮助。
如果你使用过sybase / mSServer isql,你就会知道这真的很痛苦。对cmd-line编辑和历史记录没有真正的支持。最初创建SQSH是为了提供类似于shell的cmd-line环境,以便与数据库连接。它非常易于从数据库中提取数据并保存到文件中。然后,您可以根据需要编辑该文件,并使用bcp或其他方法将数据加载到新表中。
SQSH shell支持环境变量,文件重定向(我不记得使用输入方向internallY,但能够写
select c1, c2, c3,c7, c120 from customer > customerFile
非常方便。
从左侧菜单中的功能链接下的http://www.sqsh.org处查看完整的功能列表。
Commands
Variables
Redirection and Pipes
Aliasing
Command Substitution
Backgrounding & Job Control
SQL Batch History
Configurable Exit Status
Inter-Server BCP
Remote Procedure Calls
Semicolon "go"
Simple Scripting
Flow-of-Control
Functions
Multiple Display Styles
X Windows Support
Macro Pre-Processing
Miscellaneous
Commands
请注意,控制流允许有1个查询返回多行结果集,并对每条记录使用do
和while
循环处理。这也支持if ... elif ..fi
块。我不记得使用那些功能那么多了,但我找到了别名和env vars,重定向节省了我几个小时。
那就是说,我是一个积极的用户。文档不会为您提供所有答案,因此需要一些时间进行实验,头脑清理和审查。
我对TDS没有任何经验,除非已经阅读过。基本上你需要回答的问题是,我是shell命令行junky,我是否愿意花一点时间学习如何在基于文本的SQL客户端中获得cmd-line power。
IHTH。
答案 1 :(得分:1)
TDS(表格数据流)是Sybase和MSSQL正在使用的本机客户端 - 服务器通信协议,在CT_Library中实现,CT_Library是一组专有的中间件软件和实用程序。 FreeDTS是CT-Library的OpenSource等价物。 Sqsh使用CT-Library调用与服务器通信,可以与Sybase CT-Library或FreeTDS建立/链接。 Sybase CT-Library仅支持TDS 5.0及更低版本,而MSSQL现在使用TDS 7.0或8.0版本。 FreeTDS也支持这些协议版本。因此,如果您希望sqsh能够连接到MSSQL,您将需要FreeTDS作为中间件层。 FreeTDS还附带了几个基本实用程序,可用于连接服务器并执行一些SQL语句(fisql,tsql)。然而,Sqsh提供了更多功能,如真正的shell。
答案 2 :(得分:0)
我在ubuntu上使用unixodbc和freetds以及perl的ODBC模块。有时(尽管很少)我使用isql
进行快速查询,但就是这样。 SQSH类似于具有更好功能的isql。查看SQSH wiki
SQSH比isql具有更多功能。但是,我从来没有遇到过必须广泛使用isql / sqsh的用例。无论我拥有什么,我都是通过perl来做的。