powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Битовые значения
25 сообщений из 127, страница 5 из 6
Битовые значения
    #39637800
Фотография LocksmithPC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrushне могу. Компонент импорта тупо гонит все в таблицу. Пока еще не понял как перехватить "на лету" каждую запись и преобразовать как мне надо. Автор компонента подсказывал - на выходных попробую все-таки понять как.


Может тебе сменить компонент? Например на тот же TClarionDataSet и им открывать таблицы Clarion`а как обычный набор данных?

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
with TClarionDataSet.Create(Self) do
  try
    TableName := 'C:\Temp\Data.dat';

    Active := True;

    First;
    while not Eof do
      begin
        Caption := Concat(Fields[0].AsString, Fields[3].AsString);

        Application.ProcessMessages;

        Next;
      end;

    Active := False;

  finally
    Free;

  end;
...
Рейтинг: 0 / 0
Битовые значения
    #39637892
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LocksmithPC,

Помнится, у TClarionDataSet были какие-то проблемы как раз с массивами.
Это не так?
...
Рейтинг: 0 / 0
Битовые значения
    #39637904
Фотография LocksmithPC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSery, Поискал сейчас свежую версию. Последнее что было CDS_D2010.

"CLARION TOOLKIT AGE II" "No Clarion Arrays and Indexes" :(

тогда остается:

Код: powershell
1.
2.
for %%i in (C:\Temp\Dat\*.dat) do (
  ccvt.exe t=clarion i=%%i o=basic f=C:\Temp\Bas\%%~ni.bas)



на выхлопе будет

Код: powershell
1.
2.
3.
4.
5.
6.
7.
"ADR:U","ADR:D","ADR:KO","ADR:KV1","ADR:KV2","ADR:POST","ADR:P_UCH","ADR:UCH","ADR:DD","ADR:POR","ADR:R","ADR:MUN"
"2","7","","1","999","001","",1,20,16,"01","33 618 000"
"2","9","","1","999","001","",1,19,24,"01","33 618 000"
"2","10","","1","999","001","",1,19,28,"01","33 618 000"
"2","11","","1","999","001","",1,19,32,"01","33 618 000"
"4","1","","1","999","001","",1,10,4,"01","33 618 000"
...



уж такую дрянь прочитать и залить куда надо рубля не стоит. правда остается засада с запятыми внутри "текстовых полей", но это уже мелочи.

из минусов: долго и 16 бит. на 64-х битной ОС не запустить.
...
Рейтинг: 0 / 0
Битовые значения
    #39637912
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LocksmithPC,

До Clarion Toolkit 2 был ещё 1.
Он не является наследником TDataSet, что делает несколько нетривиальным его использование, зато он низкоуровневый, и смутно помнится, что вот он-то как раз и массивы мог читать.
...
Рейтинг: 0 / 0
Битовые значения
    #39637915
Фотография LocksmithPC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSery,

У меня только 2 версии. От Кудрявцева и Захребеткова. Первую версию не видал.
...
Рейтинг: 0 / 0
Битовые значения
    #39637922
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LocksmithPC,

У Кудрявцева была более ранняя, на основе которой он потом этот датасет и пытался запилить, но бросил, не доделав.
...
Рейтинг: 0 / 0
Битовые значения
    #39637929
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот, например.
Clarion Toolkit v.1.14Description
Components set for Clarion v.2.x tables read-only access.
Features:

Encrypted tables support (with password recovering)
Clarion arrays support
Firebird (Interbase 6) support
Application-level transactions.
...
Рейтинг: 0 / 0
Битовые значения
    #39637978
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LocksmithPCWildSery, Поискал сейчас свежую версию. Последнее что было CDS_D2010.

"CLARION TOOLKIT AGE II" "No Clarion Arrays and Indexes" :(

тогда остается:

Код: powershell
1.
2.
for %%i in (C:\Temp\Dat\*.dat) do (
  ccvt.exe t=clarion i=%%i o=basic f=C:\Temp\Bas\%%~ni.bas)



на выхлопе будет

Код: powershell
1.
2.
3.
4.
5.
6.
7.
"ADR:U","ADR:D","ADR:KO","ADR:KV1","ADR:KV2","ADR:POST","ADR:P_UCH","ADR:UCH","ADR:DD","ADR:POR","ADR:R","ADR:MUN"
"2","7","","1","999","001","",1,20,16,"01","33 618 000"
"2","9","","1","999","001","",1,19,24,"01","33 618 000"
"2","10","","1","999","001","",1,19,28,"01","33 618 000"
"2","11","","1","999","001","",1,19,32,"01","33 618 000"
"4","1","","1","999","001","",1,10,4,"01","33 618 000"
...



уж такую дрянь прочитать и залить куда надо рубля не стоит. правда остается засада с запятыми внутри "текстовых полей", но это уже мелочи.

из минусов: долго и 16 бит. на 64-х битной ОС не запустить.

Ха, как бы не так. CCVT не видит массивов в принципе. Показывает только первый элемент. Эту утилиту я знаю уже 16 лет.
...
Рейтинг: 0 / 0
Битовые значения
    #39637983
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush,
Если бы утилита CCVT нормально все конвертировала - я бы не занимался промежуточной конвертацией, а сразу же из ДБФ разгонял туда куда мне надо
...
Рейтинг: 0 / 0
Битовые значения
    #39637985
Фотография LocksmithPC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush, Это чо, родная утилита не выплевывает родные поля из родных таблиц? :)) Слава б-гу АРМ на кларионе умер 4 года назад :)
...
Рейтинг: 0 / 0
Битовые значения
    #39638027
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LocksmithPCakrush, Это чо, родная утилита не выплевывает родные поля из родных таблиц? :)) Слава б-гу АРМ на кларионе умер 4 года назад :)

Увы, да.
Родная утилита не конвертирует поля массивы :'(
Пришлось подкопить денег на компонент который нормально видит поля массивы.
Афтар даже сказал что доработает импорт двумерного массива. Есть в одной таблице массив DIM(2,18)
...
Рейтинг: 0 / 0
Битовые значения
    #39638038
Фотография LocksmithPC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush,

Можешь на почту (LocksmithPC@mail.ru) кинуть небольшую табличку с такими полями, если там ПД нет, конечно?
...
Рейтинг: 0 / 0
Битовые значения
    #39638049
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrushне могу. Компонент импорта тупо гонит все в таблицу.

1) почему бы не использовать какую-нибудь внешнюю таблицу ? бинарный файл, например ?

2) даже если обязательно из компонента писать внутрь обычной таблицы Firebird - не нужно обновлять "по месту" и много раз подряд.

Сделай в FB две таблицы - одна для импорта, вторая для очищенных значений.
APPLIC1 и APPLIC2
А дальше как я писал выше. Ну пусть APPLIC1 будет не external table, а обычной таблицей, жаль, ну что сделаешь. Но сам метод точно такой же.

Идешь по "импортнутой" таблице строчка за строчкой в цикле и по одной строке окончательно подготовленнйо записываешь в "очищенную" таблицу.
Потом "импортнутую" таблицу чистишь или даже удаляешь.

Твой главный враг - многократные пробежки по огромной таблице.
Твоя главная задача - сделать пробежек так мало, как это возможно. 1, 2, 3...
Чем меньше - тем быстрее.
Тебе нужно написать PSQL блок (анонимный или stored procedure) который будет делать ВСЮ обработку каждой строчки сразу, не разбивая на шаги. Чтобы копировать в один проход, а не в 28 проходов.

Я просто не знаю, что тут ещё можно разжёвывать дальше.
...
Рейтинг: 0 / 0
Битовые значения
    #39638067
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochА дальше как я писал выше. Ну пусть APPLIC1 будет не external table, а обычной таблицей, жаль, ну что сделаешь. Но сам метод точно такой же.

Идешь по "импортнутой" таблице строчка за строчкой в цикле и по одной строке окончательно подготовленнйо записываешь в "очищенную" таблицу.
Потом "импортнутую" таблицу чистишь или даже удаляешь.


Можно GTT. Я именно так и делаю сложный импорт. В GTT идут сырые данные, а дальше курсор по GTT и их очистка и даже распихивание по нескольким таблицам.
...
Рейтинг: 0 / 0
Битовые значения
    #39638082
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

вряд ли. я думал, но мне не понравилось :-P

Я не знаю, насколько хорошо работает GTT с огроооомными объёмами данных.

А главное, он описывает свой SMImport как некий черный ящик, в работу которого он вмешаться не может. И заменить его не может. И тут возникает вопрос, можно ли заставить его SMImport и запуск скрипта-распихивателя потом проходить через одно и то же соединение? Или SMImport делаёт своё соединение, а скрипт - своё ?
...
Рейтинг: 0 / 0
Битовые значения
    #39638162
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochСимонов Денис,

вряд ли. я думал, но мне не понравилось :-P

Я не знаю, насколько хорошо работает GTT с огроооомными объёмами данных.

А главное, он описывает свой SMImport как некий черный ящик, в работу которого он вмешаться не может. И заменить его не может. И тут возникает вопрос, можно ли заставить его SMImport и запуск скрипта-распихивателя потом проходить через одно и то же соединение? Или SMImport делаёт своё соединение, а скрипт - своё ?

Как работает компонент:
1. Задаю имя исходной таблицы, имя таблицы-приемник, указываю Датасет.
2. Задаю соответствие столбцов
а потом, по сути только несколько строк:
Код: sql
1.
2.
3.
4.
5.
fbTImport.UpdateTransaction.StartTransaction;
fbTImport.Open;
SMIClar.Execute;
fbTImport.UpdateTransaction.Commit;
fbTImport.Close;


В теории компонент сам все комитит, но комит вызываю на всякий случай.
...
Рейтинг: 0 / 0
Битовые значения
    #39638208
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush,
Модераторам спасибо.
Сообщение писал быстро, забыл оформить в теги.
Сообщение можно удалить ;)
...
Рейтинг: 0 / 0
Битовые значения
    #39638211
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush,

вставка большого количества строк в SQL базы данных через TDataset.Insert / TDataSet.Post может быть весьма долгой (зависит от того, работает ли TDataSet честно "в лоб" или использует хитрости)

Что именно тормозит, скрипты после fbTImport.Close ? или процесс от StartTransaction до Close ?
...
Рейтинг: 0 / 0
Битовые значения
    #39638307
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,
Мне кажется что сильно тормозят скрипты.
Засек время.
Всего импортируется 6млн строк.
Время 1ч30мин.
Получается в среднем - ок. 1111 записей в секунду.
Думаю что нормально.
Когда пойду дальше - переносить из временной БД в основную с обработкой, тогда посмотрим.
...
Рейтинг: 0 / 0
Битовые значения
    #39638309
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush,
Немного не точно написал: импортируется и обрабатывается скриптами.
...
Рейтинг: 0 / 0
Битовые значения
    #39638315
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush,

Ты не ответил, - исходники используемого компонента импорта у тебя есть?
...
Рейтинг: 0 / 0
Битовые значения
    #39638346
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad Fakrush,

Ты не ответил, - исходники используемого компонента импорта у тебя есть?
есть
...
Рейтинг: 0 / 0
Битовые значения
    #39638349
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush,

Вот. А теперь представь картину, что опытной рукой его, скорее всего, не более чем пятью строками можно поправить с тем, чтобы он для пустых строк сразу вставлял пустые строки, а даты сразу же вставлял с необходимым смещением. И что тогда останется от того твоего скрипта постобработки и обмусоливаемое "проблемы" в целом? Представил?
...
Рейтинг: 0 / 0
Битовые значения
    #39638350
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad Fakrush,

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

Представил.
Допустим со строками можно попробовать.
А вот с датами проблема.
Даты хранятся в типе LONG
и как при импорте определить это число или дата?
...
Рейтинг: 0 / 0
Битовые значения
    #39638390
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush,

Не имея перед глазами исходников трудно говорить более предметно, но если ты расшифруешь как именно в нем "задается соответствие столбов", то могу и пофантазировать, так сказать, на кончике пера. Однако, прошу заметить, что уже за счет одного лишь сокращения последующего апдейтов строк твой послескрипт уже полегчает как бы не не треть (или больше?).
...
Рейтинг: 0 / 0
25 сообщений из 127, страница 5 из 6
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Битовые значения
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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