Удаленный клиент командной строки Informix 11.5 - PullRequest
2 голосов
/ 26 ноября 2009

Средство командной строки поставляется с Informix 11.5 аналогично SQLCMD для SQL Server?

Если да, как мне подключиться к удаленному серверу и выполнять регулярные запросы SELECT / INSERT / UPDATE, используя его?

Ответы [ 2 ]

3 голосов
/ 26 ноября 2009

Как говорит Михал Никлас, стандартным инструментом, поставляемым с 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

Это подключается к базе данных с именем 'dbname' на сервере базы данных, известном как 'dbserver', как указано в файле sqlhosts (обычно $ INFORMIXDIR / etc / sqlhosts). «-E» указывает на выражение SQL - оператор выбора; результаты будут распечатаны на стандартный вывод в строгом формате (формат Informix UNLOAD), по одной логической строке на запись. «-X» включает режим трассировки; опция '-f' означает чтение указанного файла для дальнейших команд. Расширение «.sql» не является обязательным (будьте осторожны: DB-Access требует расширения «.sql» и добавит его для вас). (Аргументы, не начинающиеся с префикса «-e» или «-f», интерпретируются эвристически; если он содержит пробелы, это SQL; если нет, то это имя файла.) Опция «-H» печатает заголовки столбцов (метки ) перед набором результатов; опция '-T' печатает типы столбцов (после заголовков, до результатов). Опция '-B' работает в режиме тестирования; он включает трассировку, печатает выписку, время начала выписки и время, сколько это заняло. (Знание того, когда начинается оператор, полезно, если для запуска SQL требуется много минут - как это может быть в сценариях бенчмаркинга). Существуют элементы управления форматом вывода (включая CSV и даже вариант XML, но не XML с использованием пространств имен), форматом даты и т. Д. Существуют «встроенные» команды для перенаправления ввода и вывода и ошибок; большинство параметров командной строки также могут использоваться в интерпретаторе и т. д. SQLCMD также предоставляет механизм истории; он сохраняет операторы SQL, и вы можете просматривать, редактировать или повторно запускать их. В сочетании с перенаправлением вывода вы можете сохранить список выполненных операторов и т. Д.

Единственный недостаток SQLCMD - это то, что он в настоящее время не портирован на Windows. Он работал на Windows когда-то около 6 или 7 лет назад. С тех пор компиляторы Microsoft стали беспокоиться о функциях API, не относящихся к MS, настаивая на том, что даже если я запрашиваю их по имени (запрашивая функциональность POSIX), функции должны начинаться с префикса подчеркиванием, а с помощью набора функций, которые использовать безопасно, если вы обращаете внимание на то, что вы делаете (но, к сожалению, могут быть оскорблены теми, кто не обращает на это внимания, и, кажется, вокруг больше невнимательных, чем внимательных программистов) - я имею в виду функции типа 'strcpy () 'который может использоваться совершенно безопасно, если вы знаете размер строк источника и назначения перед тем, как вызывать его. Это в моем списке дел - просто еще не было сделано, потому что это не мой зуд.

Существует также другой инструмент с открытым исходным кодом, называемый SQSL , который вы можете рассмотреть. Он имеет некоторые преимущества по сравнению с SQLCMD (условная логика и т. Д.), Но я думаю, что SQLCMD имеет некоторые преимущества по сравнению с SQSL.

Вы также можете подумать, подойдет ли вам Perl + DBI + DBD :: Informix + dbish.

2 голосов
/ 26 ноября 2009

Попробуйте DB-Access

... DB – Access предоставляет пользовательский интерфейс для ввода, выполнения и отладки операторов языка структурированных запросов (SQL) и процедур языка хранимых процедур (SPL) ...

...