远程Informix 11.5命令行客户端

时间:2009-11-26 12:23:39

标签: command-line informix sqlcmd

Informix 11.5的命令行工具是否与SQL Server的SQLCMD类似?

如果是,我如何连接到远程服务器并使用它执行常规的SELECT / INSERT / UPDATE查询?

2 个答案:

答案 0 :(得分:3)

正如Michal Niklas所说,IBM Informix Dynamic Server(通俗地说IDS甚至只是Informix)提供的标准工具是DB-Access。但是,它仅与IDS本身一起分发,而不是与Informix Client SDK(CSDK)或Informix Connect(I-Connect)产品一起分发。

如果要从未安装IDS的计算机访问IDS,则需要在计算机上安装CSDK或I-Connect,以及其他一些软件 - 可能是原始版本(Microsoft之前的十年及更长版本)版本SQLCMD。这就是我使用的 - 并且已经使用了各种版本(咳嗽,喋喋不休,ouch)二十二年左右;我写它是因为我不喜欢名为isql的程序的命令行行为(产品Informix SQL的一部分),这是DB-Access的前导。 (很多历史 - 对你来说不是很重要。)

用法 - SQLCMD提供的选项多于您知道如何处理。但基本原理很简单:

 sqlcmd -d dbname@dbserver -e 'select * from table' -x -f file.sql

这将连接到sqlhosts文件(通常是$ INFORMIXDIR / etc / sqlhosts)中指定的数据库服务器“dbserver”上名为“dbname”的数据库。 '-e'表示SQL表达式 - 一个select语句;结果将以严格格式(Informix UNLOAD格式)打印到标准输出,每条记录一条逻辑行。 '-x'打开跟踪模式; '-f'选项意味着读取命名文件以获取更多命令。 '.sql'扩展名不是必需的(注意:DB-Access需要'.sql'扩展名并将为你添加它)。 (没有以'-e'或'-f'为前缀的参数可以启发式解释;如果它包含空格,则为SQL;如果不包含,则为文件名。)' - H'选项打印列标题(标签) )在结果集之前; '-T'选项打印列类型(在标题之后,结果之前)。 '-B'选项以基准模式运行;它打开跟踪,打印语句,语句开始的时间,以及所花费的时间。 (如果SQL需要很长时间才能运行,那么知道语句何时启动是有帮助的 - 就像在基准测试场景中一样)。对输出格式(包括CSV甚至XML的变体 - 但不是使用命名空间的XML)和日期格式等进行控制。有“内置”命令来重定向输入和输出以及错误;大多数命令行选项也可以在interpeter等中使用.SQLCMD还提供了历史机制;它保存了SQL语句,您可以查看,编辑或重新运行它们。结合输出重定向,您可以保存已执行的语句列表等。

SQLCMD唯一的问题是它目前没有移植到Windows。它在大约6或7年前曾在Windows上运行过一次。从那以后,微软的编译器对非MS API函数感到厌倦,坚持即使我按名称要求它们(通过请求POSIX功能),函数必须以下划线为前缀,并且弃用一堆可以使用的函数。如果你注意你正在做的事情会被安全地使用(但是,遗憾的是,那些没有注意的人可能会滥用这些东西,并且看起来比注意力的编码员更加注意力不集中) - 我的意思是'strcpy()之类的函数'如果在调用之前知道源字符串和目标字符串的大小,则可以非常安全地使用它。这是我要做的事情清单 - 它还没有完成,因为它不是我的痒。

您还可以考虑使用另一个名为SQSL的开源工具。它比SQLCMD(条件逻辑等)有一些优势,但我认为SQLCMD比SQSL有一些优势。

您还可以考虑Perl + DBI + DBD :: Informix + dbish是否适合您。

答案 1 :(得分:2)

尝试DB-Access

... DB-Access提供了一个用户界面,用于输入,执行和调试结构化查询语言(SQL)语句和存储过程语言(SPL)例程......