Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Firebird, Interbase > Выполнения скрипта средствами Firebird


Автор: Gluttton 24.10.2009, 18:37
Существует ли возможность выполнять скрипты средствами Firebird?

Автор: FMA 24.10.2009, 19:53
Да, используя API сервера. 

Автор: Gluttton 24.10.2009, 20:27
Цитата(FMA @  24.10.2009,  19:53 Найти цитируемый пост)
Да, используя API сервера. 

 smile 
А можно подробнее?

Автор: Akella 25.10.2009, 11:03
1. Используя обычную кверю? autoddl := false

Код
IBQuery.sql.text := 'drop table mytable';
IBQuery.ExecSql;



2. pFibScripter (в составе FIb+), возможно, что в тырнете есть бесплатная версия, которая существоала до входа в состав Fib+

Добавлено @ 11:08
Ну а самый правильный, наверное, и идеальный вариант - таскать с собой библиотеку IBExpert`а. Загляни в папку IBEScriptDll, там где установлен IBExpert. Но эта библиотека весит >6 метров

Автор: Gluttton 25.10.2009, 11:24
Akella, я собственно говоря, к чему это...

Предположим я общаюсь с кем либо, в рамках совместного проекта. Воссоздание приложений может быть выполнено с помощью компиляторов и различных библиотек. И для распространения приложения достаточно обмениваться исходным кодом.
А как быть с БД? Неужели если я хочу поделиться своим решением я должен выкладывать БД? Или же я выкладываю набор команд, а кто то должен терпеливо их вводиь в isql.exe?

Я то с удовольствием использую IBExpert, но вдруг скрипт потребуется выполнить пользователю у которого кодовая страница по умолчанию не предоставляет бесплатный доступ к IBExpert'y smile? Да и думаю (надеюсь), что должно же быть какое то "нативное" решение этого вопроса.

Цитата(Akella @  25.10.2009,  11:03 Найти цитируемый пост)
Ну а самый правильный, наверное, и идеальный вариант - таскать с собой библиотеку IBExpert`а. Загляни в папку IBEScriptDll, там где установлен IBExpert. Но эта библиотека весит >6 метров


Меня размер не смущает... Ведь для того, что бы сколько угодно раз собирать скрипты достаточно один раз скачать 6М, а это я думаю не проблема... Вопрос в том честно ли так?

Автор: Akella 25.10.2009, 11:31
Я распространяю БД. Мороки меньше. И встроить в программу возможность выполнять скрипты ручками (в программе) или выполнять скрипт из файлов на старте программы.


Цитата(Gluttton @  25.10.2009,  11:24 Найти цитируемый пост)
терпеливо их вводиь в isql.exe?

Почитай, isql может выполнять скрипты из файлов.


Цитата(Gluttton @  25.10.2009,  11:24 Найти цитируемый пост)
Да и думаю (надеюсь), что должно же быть какое то "нативное" решение этого вопроса.

нативное для кого/чего?


Цитата(Gluttton @  25.10.2009,  11:24 Найти цитируемый пост)
Меня размер не смущает... Ведь для того, что бы сколько угодно раз собирать скрипты достаточно один раз скачать 6М, а это я думаю не проблема... Вопрос в том честно ли так? 

Думаю, что да. Эксперт бесплатен для граждан бывшего СНГ.

Автор: Gluttton 25.10.2009, 11:36
Цитата(Akella @  25.10.2009,  11:31 Найти цитируемый пост)
нативное для кого/чего?

Для Firebird'a
Цитата(Akella @  25.10.2009,  11:31 Найти цитируемый пост)
Почитай, isql может выполнять скрипты из файлов.

Именно это я имел ввиду.
А как можно выполнить скрипт из isql (или где почитать)?

Автор: Akella 25.10.2009, 11:52
Как где, в справке (в документации).
Разве у тебя нет папки C:\Program Files\Firebird\Firebird_2_0\doc
Там есть файл README.isql_enhancements.txt

 Ну или погуглить. Можно в книге Хеллен Борри.

Автор: FMA 25.10.2009, 14:21
Вся работа с БД ведется через библиотеку fbclient.dll или gds32.dll
Более подробно об использовании API этих библиотек можно прочитать в документации API Guide http://www.ibase.ru/firebird.htm 
Сразу скажу, что сам напрямую с командами библиотек не работал, т.к. в большинстве своем работаю в с компонентами FibPlus, которые и работают с API.

Автор: Gluttton 25.10.2009, 20:33
Akella, 
Цитата(Akella @  25.10.2009,  11:52 Найти цитируемый пост)
Разве у тебя нет папки C:\Program Files\Firebird\Firebird_2_0\docТам есть файл README.isql_enhancements.txt


Спасибо, помогло!

Цитата(Akella @  25.10.2009,  11:52 Найти цитируемый пост)
 Ну или погуглить.

Да пробовал, не признается мне Googl... Может меня забанили в googl'e smile ...

FMA, спасибо за ссылку.

Автор: Deniz 26.10.2009, 07:03
В свое время рядом с IBExpert лежали файлы: IBECompare.exe (~700K) и IBEScript.exe (~3M)
По названию не сложно догадаться о их назначении.
Написав небольшой bat-файл можно автоматизировать процесс сравнения 2-х БД и выполнения скриптов, например:
Код
IBECompare -D -Cconfig.ini -Oresult.sql
IBEScript.exe result.sql -S -N -E -VScriptLog.txt
в файле result.sql разница между 2 БД(скриптами)
пример Config.ini:
Код
;[MasterDB]
;ConnectString=localhost:d:\1\test.fdb
;Username=SYSDBA
;Password=masterkey
;Charset=WIN_1251
;ClientLib=gds32.dll
; Next item will be used while comparing tables
;TableName=CUSTOMER
 
; Instead of MasterDB section you can use MasterScript section:
[MasterScript]
ScriptFile=d:\1\test.sql
 
[TargetDB]
ConnectString=localhost:d:\1\test_2.fdb
Username=SYSDBA
Password=masterkey
Charset=WIN_1251
ClientLib=gds32.dll
; Next item will be used while comparing tables
TableName="Customer"
 
; Instead of TargetDB section you can use TargetScript section:
;[TargetScript]
;ScriptFile=d:\1\test_2.sql
 
[CompareObjects]
Domains=1
Tables=1
Views=1
Triggers=1
Procedures=1
Generators=1
Exceptions=1
Functions=1
Roles=1
Indices=1
Grants=1
Descriptions=1
PrimaryKeys=1
ForeignKeys=1
Uniques=1
Checks=1
 
[Options]
; Next items will be used while comparing tables
ProcessINSERTs=1
ProcessUPDATEs=1
ProcessDELETEs=1
давно пользуюсь, вполне работоспособно.

Автор: Gluttton 26.10.2009, 10:08
Deniz, спасибо за то, что поделился опытом  smile !

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)