Перейти к основному содержанию

InterBase Data Supplier (ibds)

19 июля, 2011 - 12:54



Версия 1.4.4

Данная весьма компактная программа-утилита позволяет выгружать данные любого объема из баз данных СУБД InterBase и Firebird с использованием IBX. Все необходимые настройки производятся в файле ibds.ini.
Программа является 32-разрядной и консольной. Язык разработки - Delphi.

СОДЕРЖАНИЕ


Принцип работы

Программа, согласно настройкам и параметрам, выгружает данные запроса в текстовый файл по одной записи в строку. При этом никакого промежуточного буфера не создается, что позволяет не загружать оперативную память. Этим достигается возможность выгрузки неограниченного количества записей таблиц. Во всяком случае, миллионы записей выгружает без проблем.
Обратная операция загрузки записей в таблицу базы данных происходит путем выполнения команды INSERT для каждой строки из текстового файла, подготовленного ibds. Строка файла подставляется без изменений в выражение VALUES(...) команды INSERT. Список полей должен быть определен в параметре fields файла настройки ibds.ini. В итоге выполнится команда
INSERT INTO <таблица> (<fields>) VALUES (<строка>)
Если параметр fields не указан, то команда будет выглядеть так:
INSERT INTO <таблица> VALUES (<строка>)
В основном, эта программа - средство для переноса данных между базами из командной строки через текстовый файл.

Возможности

Утилита позволяет выполнять три функции:

  1. Выборка и сохранение данных SELECT-запроса в текстовом файле. BLOB-поля не поддерживаются. SELECT можно написать целиком как команду, а можно указать список полей и часть команды после WHERE. В последнем случае этот список полей можно использовать и при загрузке данных в таблицу. Значения полей разделяются запятыми «,» и строковые поля заключаются в кавычки.
  2. Загрузка данных из текстового файла, подготовленного с помощью п.1, в таблицу базы данных.
  3. Выполнение любой SQL-команды, не возвращающей данные.

В любые SQL-команды, в том числе выборки (SELECT), можно передавать параметры из командной строки. Параметр в команде начинается с двоеточия «:».

Настройка

Настройка производится в файле ibds.ini указанием параметров подключения к базе данных и описание возможных операций (команд).
Строки-комментарии должны начинаться с символа «;».

Состав параметров секций
Все параметры - необязательные, если специально не указано обратное.

[DB]
В этой секции можно определить настройки подключения к базе данных. Секция необязательная к заполнению. Некоторые параметры можно передавать через командную строку.

file - файл базы данных

username - имя пользователя
(по умолчанию - 'sysdba')

password - пароль пользователя
(по умолчанию - 'masterke')

rolename - роль

charset - кодировка
(по умолчанию - 'WIN1251')

Пример:
[DB]
file=myserv:/opt/firebird/examples/employee.fdb
username=dbadmin
password=nimdabd
rolename=guru
charset=WIN1251

Кроме секции DB в файле должны присутствовать секции для операций. Наименование секции должно совпадать с именем таблицы (при загрузке и при выгрузке с использованием списка полей). Текстовый файл должен(будет) иметь то же имя. В этих секциях могут использоваться следующие параметры:

select - SQL-команда SELECT. Используется только при выгрузке данных.

fields - список полей таблицы. При выгрузке используется, если не указан параметр select.
(по умолчанию - *)

commitrecords - количество записей, через которые при выгрузке сохраняется файл на диск и при загрузке производится commit.
(по умолчанию - 10000)

where - часть команды SELECT после WHERE. Используется только при выгрузке, если не указан параметр select.

сommand - любая правильная однострочная SQL-команда.

Примеры:
[employee]
fields = EMP_NO,FIRST_NAME,LAST_NAME,PHONE_EXT,DEPT_NO
commitrecords = 10
where = JOB_COUNTRY != 'USA' order by 2

[myproc]
command = execute procedure myproc(:par1,:par2);

Использование

Запуск:
[путь]ibds <action> <dsname>[(param,..)] [[[[<dbname>] <username>] <password>] <rolename>]

где
<action> - действие:
s - выгрузить записи в текстовый файл
i - добавить записи в таблицу
e - выполнить SQL-команду
Прописная (заглавная) <action> не останавливает программу после выполнения.
<dsname> - имя набора данных(таблицы). Для него должна быть секция в ibds.ini с параметрами, соответсвующими действию
<dbname> - полное имя файла базы данных
<username> имя пользователя
<password> пароль
<rolename> имя роли

Примеры:
ibds s employee
ibds i table2 myib:/db/mydb.gdb iamuser dontknow
ibds E myproc(1,value2) myib:/db/mydb.gdb iamuser dontknow

Файлы ibds.exe и основной файл настройки ibds.ini должны находиться в одном каталоге (папке).

При вызове с неверным количеством параметров выдается справка по запуску.

В случае ошибки возвращаются следующие коды завершения:
0 - успешное завершение;
1 - неверные параметра запуска;
2 - ошибка при выполнении.

Лицензия

Данная программа поставляется с исходными текстами и распространяется под лицензией GNU General Public License (GPL). Полный ее текст смотрите в файлах gpl.txt и gplrus.txt.

История изменений

Условные обозначения:
+ добавлено, # изменено, - удалено, * исправлено

26.12.08 1.4.4
1.+ Адаптировано под Delphi 2006 (Turbo Delphi).

25.01.07 1.4.3
1.+ Руссификация.
2.+ Возможность передавать параметры в запросы.
3.+ Возможность выполнять любые SQL-команды (параметр command в ibds.ini).
4.# Переработана выдача комментариев на экран.

28.11.06 1.3
Первая официальная версия. Реализованы все основные возможности.