Гость
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / IBEBlock импорта / 5 сообщений из 5, страница 1 из 1
07.10.2016, 08:16
    #39322408
akrush
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IBEBlock импорта
Доброго времени суток.
Делаю импорт 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
07.10.2016, 08:18
    #39322409
akrush
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IBEBlock импорта
пробовал "множить" код между begin end с изменением имен таблиц.
У меня ничего не получилось , блок не выполняется. :(
...
Рейтинг: 0 / 0
07.10.2016, 08:20
    #39322410
akrush
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IBEBlock импорта
Может можно имя задать параметром, а потом вызвать из другого блока?
Это тоже подойдет.
Операция не частая, но периодическая.
Возможен даже вариант с 27 таблицами
...
Рейтинг: 0 / 0
07.10.2016, 10:47
    #39322536
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IBEBlock импорта
Ругается, не получилось, не выполняется... Стучи по нему, пока тексты ошибок отдавать не начнет.
...
Рейтинг: 0 / 0
07.10.2016, 11:45
    #39322598
akrush
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IBEBlock импорта
IBExpert,
Странно. Запустил чтобы воспроизвести проблему - все импортировало.
Ладно, пока отбой. Увижу ошибку - дам знать.
Спасибо
...
Рейтинг: 0 / 0
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / IBEBlock импорта / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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