Программа nhdbt (nhutils database terminal) представляет собой консольное приложение для выполнения SQL запросов к ODBC базам данных в пакетном или интерактивном режиме:

  • выполнение запросов CREATE, INSERT, UPDATE, DELETE, SELECT и др.
  • отображение выбранных данных (SELECT) в табличном виде
  • операции с файлами и полями BLOB

Изначально программа nhdbt была разработана для возможности работы с dBASE базами данных разных старых программ. Но, поскольку nhdbt подключается к базам данных через ODBC, то она работает и с другими базами данных, имеющими ODBC драйвер, в том числе Microsoft SQL Server, Oracle Database и даже текстовыми файлами (*.txt, *.csv), файлами Microsoft Excel (*.xls), Microsoft Access (*.mdb).

Несмотря на то, что такие базы данных, как Microsoft SQL Server и Oracle Server имеют собственные терминальные программы (OSQL/ISQL для SQL Server, PL/SQL для Oracle Database), программу nhdbt удобно использовать с этими базами данных, если на компьютере не установлен родной клиент, т.к. nhdbt не требует установки и может быть запущена, например, с USB флешки.

Программа nhdbt обычно используется для выполнения SQL запросов:

  • чтение (SELECT) и изменение (INSERT/UPDATE) полей в базе данных
  • загрузка «больших» значений BLOB полей из базы данных в файлы
  • выгрузка файлов в BLOB поля базы данных

Функции доступны из командной строки, что делает легкой работу с базами данных в bat файлах, скриптах и пр.

Данные, выводимые запросом SELECT, автоматически форматируются в соответствии с типами полей, поэтому не требуется программирование для обработки результирующего набора данных.

Поскольку программа доступна в виде exe файла и не требует установки, она может быть запущена со сменного носителя (USB флешки) или включена в установочный пакет другой программы для удобства распространения. Из дополнительных компонентов программе nhdbt требуются только ODBC драйверы для сооответствующей базы данных. При этом ODBC драйвера SQL Server предустановлены в Windows.

Оценки и отзывы

Оценка редакции freesoft Оценка пользователей freesoft
Терминал базы данных Терминал базы данных

Узнать больше

Справка nhdbt | Вопросы и ответы nhdbt | Загрузка nhdbt

Примеры использования nhdbt

Ниже показаны примеры работы в nhdbt с различными базами данных:

dBase | txt/csv | Microsoft Access | Microsoft SQL Server

Подключение к dBase

Следующая команда задает подключение к базе данных dBASE в каталоге C:\Database и выполнение запросов из файла query.sql:

nhdbt "Microsoft dBASE driver (*.dbf)" "DBQ=C:\Database" query.sql

Параметр «DBQ=C:\Database» указывает расположение базы данных dBASE (каталог с файлами DBF). Подробнее формат строки подключения см. на http://connectionstrings.com

Последний параметр, query.sql, указывает на файл с запросами, например, с двумя запросами:

CREATE TABLE t1(Num LONG,Name CHAR(20));
INSERT INTO t1(Num,Name)VALUES(1,'Меркурий');

Вывод программы (пустые строки удалены):

Соединено с 'Microsoft dBASE driver (*.dbf)', параметры 'DBQ=C:\Database;DefaultDir=C:\;
Driver={Microsoft dBASE driver (*.dbf)};DriverId=533;MaxBufferSize=2048;PageTimeout=5;'
CREATE TABLE t1(Num LONG,Name CHAR(20));
Нет измененных строк. Нет выбранных строк. Время выполнения 00.031.
INSERT INTO t1(Num,Name)VALUES(1,'Меркурий');
Изменено строк: 1. Нет выбранных строк. Время выполнения 00.140.
Отсоединено от 'Microsoft dBASE driver (*.dbf)',параметры 'DBQ=C:\Database;DefaultDir=C:\;
Driver={Microsoft dBASE driver (*.dbf)};DriverId=533;MaxBufferSize=2048;PageTimeout=5;'

Выборка и вывод cтрок

Для выборки данных требуется подготовить файл с запросом SELECT, например, select.sql:

SELECT * FROM t1 WHERE Name LIKE 'М%' ORDER BY Num;

Строка запуска программы должна указывать на файл запросов:

nhdbt "Microsoft dBASE driver (*.dbf)" "DBQ=C:\Database" select.sql

Вывод программы для приведенного примера:

Соединено с 'Microsoft dBASE driver (*.dbf)', параметры 'DBQ=C:\Database;DefaultDir=C:\;
Driver={Microsoft dBASE driver (*.dbf)};DriverId=533;MaxBufferSize=2048;PageTimeout=5;'
SELECT * FROM t1 WHERE Name LIKE 'М%' ORDER BY Num;
                   NUM NAME 
---------------------- -------------------- 
                   1.0 Меркурий 
                   4.0 Марс 
Нет измененных строк. Выбрано строк: 2. Время выполнения 00.016.
Отсоединено от 'Microsoft dBASE driver (*.dbf)', параметры 'DBQ=C:\Database;DefaultDir=C:\;
Driver={Microsoft dBASE driver (*.dbf)};DriverId=533;MaxBufferSize=2048;PageTimeout=5;'

Выборка и вывод только данных

В стандартном режиме работы программа NHDBT выводит не только данные, выбираемые запросом SELECT, но и строку подключения, названия столбцов, время выполнения и пр., см. пример Выборка и вывод строк.

Это удобно для просмотра результатов, но неудобно для автоматической обработки другими программами, командными файлами или скриптами — им придётся выполнять дополнительную работу по отсеиванию служебных строк.

Для упрощения обработки был добавлен режим только данные, который включается параметром DATAONLY и выводит только выбираемые данные. Также можно задать символ-разделитель столбцов параметром CS:

nhdbt DATAONLY cs:; "Microsoft dBASE driver (*.dbf)" "DBQ=C:\Database" select.sql

Тогда будут выведены две строки:

1.0;Меркурий
4.0;Марс

Видео подключения и выполнения команд в dBase базе данных:

Подключение к TXT и CSV файлам

Подключение к файлам-таблицам в C:\Info и выполнение SQL запросов из файла query.sql:

nhdbt "Microsoft Text driver (*.txt; *.csv)" "DBQ=C:\Info" query.sql

Такой доступ к файлам предпочтительнее, если требуется выбрать строки по условию (WHERE), отсортировать записи (ORDER BY) или рассчитать выражение (SELECT Col1*Col2).

Структура данных должна быть описана в Schema.ini, например:

[t1.txt]
Format=FixedLength
ColNameHeader=false
Col1=Num float width 22
Col2=Name char width 20
CharacterSet=oem

Вывод программы:

select * from [t1.txt] where Num=1.0;
                   Num Name 
---------------------- --------------------
                   1.0 Меркурий 
Нет измененных строк. Выбрано строк: 1. Время выполнения 00.047.

Подключение к Microsoft Access

Подключение к базе данных Access, находящейся в файле \Program Files\MyApp\database.mdb от имени пользователя admin/Flvby и выполнение запросов из файла query.sql:

nhdbt "Microsoft Access driver (*.mdb)" ^
DBQ=%ProgramFiles%\MyApp\database.mdb;uid=admin;pwd=Flvby query.sql

Значение DBQ=C:\Program Files\MyApp\database.mdb указывает расположение файла базы данных Access (путь и имя файла MDB). Значения uid=admin и pwd=Flvby задают имя и пароль, с которыми программа делает попытку подключения. В строке подключения допустимы также параметры READONLY (доступ только на чтение, значения 0 или 1), EXCLUSIVE (исключительный доступ к базе данных, значения 0 или 1).
query.sql указывает на файл с запросами. Каждый запрос в файле должен заканчиваться точкой с запятой.

Подключение к Microsoft SQL Server

Подключение к базе данных ReportsDB на сервере DATASERVER пользователем reportuser/123 и выполнение запросов из файла query.sql:

nhdbt "SQL Server" server=DATASERVER;database=ReportsDB;uid=reportuser;pwd=123 ^
query.sql

Значение server=DATASERVER указывает сетевое имя сервера базы данных — DATASERVER. Проверьте, что сервер базы данных доступен по сетевому имени (не только по IP адресу).
Значение database=ReportsDB задает базу данных, к которой будет подключаться программа.
Значения uid=reportsuser и pwd=123 задают имя и пароль, с которыми программа делает попытку подключения. query.sql указывает на файл с запросами. Каждый запрос в файле должен заканчиваться точкой с запятой.

NHDBT: 2 комментария

    • 08.04.2017 в 17:32
      Постоянная ссылка

      Читает, если в качестве имени таблицы указывать короткое имя файла, заключённое в квадратные скобки:

      select count(*) from [T1LONG~1]

      Короткое имя файла можно посмотреть в свойствах файлах, а в bat файле считать из вывода dir:

      dir /x *.dbf

      Но всё это лишняя работа, поэтому если создавать новую базу, то лучше делать названия таблиц (имена файлов) не больше 8 символов.
      А если база данных уже существует, то только так.

      Ответить

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *