2

Informix 11.5 是否提供类似于 SQLCMD for SQL Server 的命令行工具?

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

4

2 回答 2

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,以及其他一些软件——也许是SQLCMD的原始版本(早于微软十年或更长时间) 。这就是我使用的——并且在过去 22 年左右的时间里(咳嗽、气喘吁吁、哎哟)已经在各种版本中使用过;我写它是因为我不喜欢一个名为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 语句,您可以查看、编辑或重新运行它们。结合输出重定向,您可以保存执行的语句列表等。选项打印列类型(在标题之后,在结果之前)。'-B' 选项在基准模式下运行;它打开跟踪,打印语句,语句开始的时间,以及花费的时间。(如果 SQL 需要很长时间才能运行,那么知道语句何时开始会很有帮助——就像在基准测试场景中一样)。可以控制输出格式(包括 CSV 甚至 XML 的变体——但不是使用命名空间的 XML)和日期格式等。有“内置”命令来重定向输入和输出以及错误;大多数命令行选项也可以在interpeter等中使用。SQLCMD也提供了历史机制;它保存 SQL 语句,您可以查看、编辑或重新运行它们。结合输出重定向,您可以保存执行的语句列表等。选项打印列类型(在标题之后,在结果之前)。'-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 是否适合您。

于 2009-11-26T17:04:45.157 回答
2

尝试DB-Access

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

于 2009-11-26T13:06:08.740 回答