powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / IBEBlock импорта
5 сообщений из 5, страница 1 из 1
IBEBlock импорта
    #39322408
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток.
Делаю импорт DBF в таблицу.
Создал отдельный скрипт в БД IBEBlock и скопировал IBEBlock импорта в него.
Суть задачи: возможно ли в 1 блоке выполнить импорт 8 таблиц. Все таблицы одинаковые по структуре, разница только в имени источника и приемника.
Еще с полученной таблицей мне нужно проделать некоторые манипуляции с датами (сейчас эти манипуляции закомментированы)
если я раскомментирую строчки update Эксперт начинает ругаться даже на строчку
Код: sql
1.
delete from TAR1;

что они выполняются без WHERE.

Вот собственно сам скрипт

Код: 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.
execute ibeblock
as
begin
  cbb = 'execute ibeblock (RecCount variant)
         as
         begin
           if (ibec_Mod(RecCount, 100) = 0) then
             ibec_Progress(RecCount || '' records imported.'');
         end;';
  
  DB = ibec_CreateConnection(__ctFirebird, 'DBName="localhost:K:\Firebird DataBase\khmeln.fdb";
                                            ClientLib=c:\Program Files\Firebird\Firebird_2_5\bin\fbclient.dll;
                                            User=SYSDBA; Password=masterkey; Names=WIN1251; SqlDialect=3;');
  try
    ibec_UseConnection(DB);
  
    -- Deleting records from the target table
    delete from TAR1;
    commit;
  
    sMappings = '"DATA_TR"="TR1_DATA_T";' + 
                '"DATA_E"="TR1_DATA_E";' + 
                '"DATA_R"="TR1_DATA_R";' + 
                '"MARK"="TR1_MARK";' + 
                '"NUMB"="TR1_NUMB";' + 
                '"TARN"="TR1_TARN";' + 
                '"COD_POSL"="TR1_CODE1";' + 
                '"COD_RIZN"="TR1_CODE2";' + 
                '"NORM_US"="TR1_NORM_U";' + 
                '"NORM_USD"="Field9";' + 
                '"CODE_NN"="TR1_CODE_N";' + 
                '"CODE_NDN"="Field11";' + 
                '"CODE_UNIT"="TR1_CODE_U";' + 
                '"COST_UNIT"="TR1_COST_U";' + 
                '"COST_UN1"="Field14";' + 
                '"COST_UN2"="Field15";' + 
                '"NORM"="TR1_NORM";' + 
                '"NORM_DOP"="TR1_NORM_D";' + 
                '"NORM_MAX"="TR1_NORM_M";' + 
                '"VOL_UN0"="TR1_VOL_UN";' + 
                '"VOL_UN1"="Field20";' + 
                '"OPAL_TIP"="TR1_K_NADL";' + 
                '"CODE_FROG"="TR1_CODE_F"';
  
    Res = ibec_ImportData(DB, 'TAR1', __impDBase, 'D:\Khmeln.she\Dic&Tar\TAR1.DBF', '', 
                          'RowFirst=1;
                           RowLast=2147483647;
                           DateOrder=DMY; DateSeparator=".";
                           TimeSeparator=":";
                           DecimalSeparator=",";
                           OemToAnsi;', :sMappings, cbb);
  
    if (Res is not null) then
      ibec_ShowMessage(Res || ' records were imported successfully.');
    --update tar1
    --set
    --  tar1.data_tr=dateadd( day, -36161,  tar1.data_tr ),
    --  tar1.data_e=dateadd( day, -36161,  tar1.data_e ),
    --  tar1.data_r=dateadd( day, -36161,  tar1.data_r );
    --update tar1 set tar1.data_e=null where tar1.data_e<cast('01/01/1950' as date);
    --commit;

  finally
    ibec_CloseConnection(DB);
  end;
end




Если такое возможно, приведите пример для таблиц ta1 и tar2


--------------------------
Firebird 2.5;
Windows 10 32-bit;
4Gb RAM;
HDD 1 Tb;
Настройки по умолчанию
...
Рейтинг: 0 / 0
IBEBlock импорта
    #39322409
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пробовал "множить" код между begin end с изменением имен таблиц.
У меня ничего не получилось , блок не выполняется. :(
...
Рейтинг: 0 / 0
IBEBlock импорта
    #39322410
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может можно имя задать параметром, а потом вызвать из другого блока?
Это тоже подойдет.
Операция не частая, но периодическая.
Возможен даже вариант с 27 таблицами
...
Рейтинг: 0 / 0
IBEBlock импорта
    #39322536
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ругается, не получилось, не выполняется... Стучи по нему, пока тексты ошибок отдавать не начнет.
...
Рейтинг: 0 / 0
IBEBlock импорта
    #39322598
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpert,
Странно. Запустил чтобы воспроизвести проблему - все импортировало.
Ладно, пока отбой. Увижу ошибку - дам знать.
Спасибо
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / IBEBlock импорта
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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