Informix 11.5 是否附带了与 SQL Server 的 SQLCMD 类似的命令行工具?
如果是,如何连接到远程服务器并使用它执行常规 SELECT/INSERT/UPDATE 查询?
最佳答案
正如 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 。这就是我使用的——并且在过去二十二年左右的时间里用过各种版本(咳嗽、噼啪、哎哟);我编写它是因为我不喜欢名为 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)和日期格式等进行控制。有“内置”命令来重定向输入、输出和错误;大多数命令行选项也可以在解释器等中使用。SQLCMD还提供了历史记录机制;它保存 SQL 语句,您可以查看、编辑或重新运行它们。与输出重定向结合使用,您可以保存执行的语句列表等。
SQLCMD 的唯一问题是它当前尚未移植到 Windows。大约六七年前,它曾在 Windows 上运行过。从那时起,微软的编译器对非 MS API 函数变得焦躁不安,坚持认为即使我按名称请求它们(通过请求 POSIX 功能),这些函数也必须以下划线为前缀,并且弃用了一堆可以如果你注意你正在做的事情,就可以安全地使用(但是,遗憾的是,可能会被那些不注意的人滥用,而且周围似乎有更多不专心的程序员) - 我的意思是像 'strcpy() 这样的函数' 如果您在调用之前知道源字符串和目标字符串的大小,则可以完全安全地使用它。它在我要做的事情 list 上 - 只是还没有完成,因为这不是我的渴望。
还有另一个开源工具,名为 SQSL您可以考虑。它比 SQLCMD(条件逻辑等)有一些优势,但我认为 SQLCMD 比 SQSL 有一些优势。
您还可以考虑 Perl + DBI + DBD::Informix + dbish 是否适合您。
关于command-line - 远程 Informix 11.5 命令行客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1803392/