Гость
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Ведение проектов Firebird средствами эмбакадеры. / 13 сообщений из 13, страница 1 из 1
15.09.2021, 13:01
    #40097780
Mikhail Tchervonenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ведение проектов Firebird средствами эмбакадеры.
Всем доброго времени суток,

в своё время в Visual Studio был тип проекта - база данных. Студия могла импортировать метаданные из базы в проект в виде текстовых скриптов итп. Далее при внесении изменений в базу достаточно было изменить эти скрипты и сказать студии накатить изменения. С одной стороны все изменения было удобно отслеживать в системе контроля версий, с другой стороны централизованно отслешивать изменения структуры базы и хранимок. Я активно пользовался этим в купе с C# и было очень удобно.
Есть ли что то подобное у эмбакадеры для Firebird/interBase? IB Expert хорош но не имеет интеграции с системами хранения версий а также как таковой идеи проекта базы данных, отслеживания её версий, изменений метаданных итп.
Насколько подходит под эти хотелки ER/Studio от эбаркадеры?

Спасибо.

Хороший программист знает как задавать вопросы, не раздражая окружающих, а выдающийся программист знает как отвечать на них без заносчивости © Стивен Хирлстон
...
Рейтинг: 0 / 0
15.09.2021, 13:07
    #40097781
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ведение проектов Firebird средствами эмбакадеры.
Скрипт, полученный путём реверс-инженеринга обычно не очень хорош. Лучше хранить
мастер-скрипт создания БД с нуля, написанный руками.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
15.09.2021, 13:51
    #40097791
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ведение проектов Firebird средствами эмбакадеры.
Dimitry Sibiryakov,

а дальше хранить полный скрипт БД (isql -x) вместе с очередным бэкапом. И уже эти скрипты можно загружать в систему контроля версий, и там формировать диффы, и прочее.
И в ИБЕ есть сравнение метаданных, по скриптам или базам, вполне нормальное. Главное только скрипты генерить чем-то одним, не мешать скрипты из isql и ИБЕ или еще чего-то другого.
...
Рейтинг: 0 / 0
15.09.2021, 13:53
    #40097792
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ведение проектов Firebird средствами эмбакадеры.
Mikhail TchervonenkoНасколько подходит под эти хотелки ER/Studio от эбаркадеры?
я думаю, там "грусть-тоска". Они там специфику InterBase с трудом поддерживают, а уж возможности DDL Firebird - это вряд-ли. Так что оттуда скрипты модификации будут неполноценными.
...
Рейтинг: 0 / 0
15.09.2021, 14:23
    #40097805
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ведение проектов Firebird средствами эмбакадеры.
"isql -x" лепит один огромный скрипт, который неудобно читать, тяжело изучать и
модифицировать. Удобнее таки в СКВ иметь скрипты для создания групп объектов в
отдельных файлах, вызываемых из главного.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
15.09.2021, 14:27
    #40097807
Mikhail Tchervonenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ведение проектов Firebird средствами эмбакадеры.
kdv,

ok, спасибо.

Тогда остаётся IBExpert (благо 20 лицензий купили в этом году) и руки.
...
Рейтинг: 0 / 0
15.09.2021, 14:42
    #40097813
Шавлюк Евгений
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ведение проектов Firebird средствами эмбакадеры.
Mikhail Tchervonenko,

Для контроля версий использую bat и IBEScript + ibeblock

Код: sql
1.
    ibec_ExtractMetadata(db, fn, 'VCSFiles;GenerateCreate;IncludeCharset;ExtractPrivileges;ExtractDescriptions','');


Указываю папку, БД. В результате набор файлов (для каждого объекта свой)

bat-файл
Код: pascal
1.
..\..\IBEXpert\IBEScript.exe ExtractMetadata.sql -Galias=%1 -Gproject=%2 -Gpath=%3 


ExtractMetadata.sql
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
execute ibeblock
as
begin
  alias = ibec_GetGlobalVar('alias', '');
  project = ibec_GetGlobalVar('project', '');
  path = ibec_GetGlobalVar('path', '');
  if (path = '') then path = alias||'_db';
  l = ibec_chr(92);

  DB_Name = '';
  reg = ibec_reg_Open(__HKEY_CURRENT_USER, 0);
  try
    if (ibec_reg_OpenKey(reg, 'Software\FIBC_Software\Aliases'||l||Alias, FALSE)) then
      DB_Name = ibec_reg_ReadString(reg, 'Database Name');
  finally
    ibec_reg_Close(reg);
  end;

  if (DB_Name = '') then
  begin
    ibec_ShowMessage('Ошибка: alias '||alias||' не существует');
    exit;
  end;

  fn = '..\project'||l||project||l||path;

  ibec_progress('Удаление старых файлов');
  if (ibec_getfiles(files_list, fn||l, '*.*',  __gfFullName) > 0) then
  begin
    i = 0;
    while (i <= ibec_high(files_list)) do
    begin
      ibec_DeleteFile(files_list[i]);
      i = i + 1;
    end
  end;

  ibec_progress('Создание отображения БД в '||fn);
  DB = ibec_CreateConnection(__ctFirebird, 'DBName="'||DB_NAME||'";user=SYSDBA; password=masterkey; clientlib=fbclient.dll');
  try
    ibec_UseConnection(DB);
    ibec_ExtractMetadata(db, fn, 'VCSFiles;GenerateCreate;IncludeCharset;ExtractPrivileges;ExtractDescriptions','');

    fs = ibec_fs_OpenFile(alias||'.data', __fmOpenRead);
    if (fs is not null) then
    begin
      ibec_progress('Создание данных БД в '||fn);

      while (not ibec_fs_Eof(fs)) do
      begin
        TableN = '';
        wh = '';

        s = ibec_fs_Readln(fs);
        ValCount = ibec_ParseCSVLine(Vals, s, '"', ibec_Chr(9), 0);
        if (Vals[0] is not null) then
          TableN = Vals[0]; else TableN = '';

        if (Vals[1] is not null) then
          wh = Vals[1]; else wh = '';

        cnt = 0;

        for select trim(r.rdb$field_name), trim(case when f.rdb$field_type in (14, 37, 40, 261, 45) then '''' else '' end), coalesce(trim(both '''' from nullif(trim(leading 'DEFAULT ' from upper(substring(coalesce(r.rdb$default_source, f.rdb$default_source) from 1 for 80))), 'NULL')), '')
            from rdb$relation_fields r
            join rdb$fields f on f.rdb$field_name = r.rdb$field_source
            where r.rdb$relation_name = :TableN
            order by r.rdb$field_position
        into n, tp, defv do
        begin
          f[cnt] = n;
          d[cnt] = defv;
          y[cnt] = tp;
          cnt = cnt + 1;
        end

        if (cnt = 0) then exit;

        s = ''; w = '';
       
        if (wh > '') then 
          w = ' where '||wh;

        k = 0;
        q = 'select * from '||TableN||W||'  order by '||f[0];
        for execute statement :q into vals do
        begin
          k = k + 1;
          i = 0;
          while (i < cnt) do
          begin
            v = vals[i];
            v = coalesce(v, '');
            r = d[i];
            if (v <> '' and v <> r) then
            begin
              s=s||f[i]||'='||y[i]||vals[i]||y[i]||ibec_CRLF();
            end
            i = i + 1;
          end;
          s=s||'---------------------------------------------------'||ibec_CRLF();
        end
        ibec_SaveToFile(fn||l||TableN||'.data', s, 1);

        ibec_progress('   '||TableN||'   '||k);
      end
      ibec_fs_CloseFile(fs);
    end
  finally
    ibec_CloseConnection(DB);
  end

  ibec_SaveToFile(fn||l||alias||'_alias.txt', DB_NAME, 0);

  ibec_progress('Отображение БД создано');
end;

...
Рейтинг: 0 / 0
15.09.2021, 14:46
    #40097815
L_argo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ведение проектов Firebird средствами эмбакадеры.
Неужели в 21 веке кому-то еще нужен этот убогий ИБ ???
...
Рейтинг: 0 / 0
15.09.2021, 15:17
    #40097822
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ведение проектов Firebird средствами эмбакадеры.
L_argo
Неужели в 21 веке кому-то еще нужен этот убогий ИБ ???
К сожалению, да, т.к. выбора нет.
P.S. По сравнению с любой альтернативой - он далеко не убогий. Вполне удобный инструмент.
...
Рейтинг: 0 / 0
15.09.2021, 15:21
    #40097823
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ведение проектов Firebird средствами эмбакадеры.
Dimitry Sibiryakov
Лучше хранить мастер-скрипт создания БД с нуля, написанный руками.

+1.

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

И всё это лежит в гите каком-нибудь. Зачем тут эмбаркадера, isql или ib-эксперт - не знаю.
...
Рейтинг: 0 / 0
15.09.2021, 17:12
    #40097854
Softologic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ведение проектов Firebird средствами эмбакадеры.
YuRock
Dimitry Sibiryakov
Лучше хранить мастер-скрипт создания БД с нуля, написанный руками.

+1.

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

И всё это лежит в гите каком-нибудь. Зачем тут эмбаркадера, isql или ib-эксперт - не знаю.

+ 1 !
...
Рейтинг: 0 / 0
17.09.2021, 12:52
    #40098286
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ведение проектов Firebird средствами эмбакадеры.
L_argoНеужели в 21 веке кому-то еще нужен этот убогий ИБ ???
Даже ИБ не убогий, а ФБ уж тем более. Если не в теме, то лучше было промолчать.
...
Рейтинг: 0 / 0
17.09.2021, 15:16
    #40098334
ъъъъъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ведение проектов Firebird средствами эмбакадеры.
kdv,

знатокам нужно журналирование и партиционирование, что бы это не значило. Даже если они сами этим никогда не пользовались.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Ведение проектов Firebird средствами эмбакадеры. / 13 сообщений из 13, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]