|
Битовые значения
|
|||
---|---|---|---|
#18+
Добрый день. Есть поле, тип smallint, назовем его NoPay, в таблице Family В этом поле хранится десятичное число. На самом деле это побитное значение из 8 бит: 0 или 1. Последовательность - 7654 3210 1. Возможно ли запросом выбрать все записи у которых бит1 установлено 1, т.е. установлен некий признак. 2. Возможно ли запросом выбрать все записи у которых бит2 установлено 1, т.е. установлен некий признак. 3. Возможно ли запросом выбрать все записи у которых бит3 установлено 1, т.е. установлен некий признак. Если возможно, покажите пожалуйста на конкретном примере: select NoPay from Family where .... -------------------------- Firebird 3.0.1.32609; IBExpert 2017.3.12.1; Windows 10 32-bit; 4Gb RAM; SSD 512Mb + HDD 1 Tb; Настройки по умолчанию Среда разработки: Delphi XE2 + FIBPlus 7.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2018, 18:10 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
Ivan_Pisarevsky, Я нашел ее и читал. Но не понял как :( Помогите примером пожалуйста ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2018, 18:25 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrushНа самом деле это побитное значение из 8 бит: 0 или 1. Последовательность - 7654 3210 это что, битовые значения? Что значит "последовательность"? это что, номера битов? тогда 2^7 + 2^6 + 2^5 и т.д. https://ru.wikipedia.org/wiki/Двоичная_система_счисления ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2018, 18:58 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
Привет. akrushЕсли возможно, покажите пожалуйста на конкретном примере: select NoPay from Family where .... Код: sql 1. 2. 3. 4. 5.
С уважением, Polesov. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2018, 20:12 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
Polesov, спасибо, попробую. еще вопрос: предположим у меня в битах 4-7 хранится некоторое количество, например 6 (это 0111). а как этой функцией проверить это число? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2018, 23:07 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrush в битах 4-7 хранится некоторое количество, например 6 (это 0111) 0111 - это 7. Потому что биты идут справа налево. Но даже если бы они шли слева направо, то это было бы 14. И в 4-7 битах никак не может храниться ни 7, ни 6. Потому что 4 бит - 2^4 = 16 5 бит - 2^5 = 32 6 бит - 2^6 = 64 7 бит - 2^7 = 128 p.s. я считаю, что только в 2018 году такое возможно услышать от программиста. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2018, 23:29 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
kdvИ в 4-7 битах никак не может храниться ни 7, ни 6. Может, конечно. В 4-х битах может храниться любое число, которое влезает в 4 бита :) Это вопрос представления информации в данном конкретном случае. Может, он там в 8 битах четыре двухбитовых числа хранит. Или два трехбитовых. Или еще как. Не возбраняется. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2018, 07:27 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrushеще вопрос: предположим у меня в битах 4-7 хранится некоторое количество, например 6 (это 0111). а как этой функцией проверить это число? bit_shr(NoPay, 4) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2018, 07:36 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
Привет. akrushеще вопрос: предположим у меня в битах 4-7 хранится некоторое количество, например 6 (это 0111). а как этой функцией проверить это число? Исходим из того, что биты нумеруются справа налево начиная с нуля. Если значение имеет тип SMALLINT - 16 бит, INTEGER - 32 бита. Для SMALLINT нас интересуют биты, помеченные 1: Код: sql 1.
Как узнать, что в указанных битах содержится число 6? Надо сдвинуть битовое значение вправо на 4, выделить по маске 4 бита и сравнить: Код: sql 1.
P.S. вообще-то 6 = 0110b :-) С уважением, Polesov. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2018, 10:45 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
kdvp.s. я считаю, что только в 2018 году такое возможно услышать от программиста. Мне ещё дико интересен характер этой битовой информации. Есть одно подозрение. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2018, 14:44 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
Polesov, так и будем решать за студоту домашку? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 09:15 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
Старый плюшевый мишкаМне ещё дико интересен характер этой битовой информации.Есть разница? Автор не понимает, как работает битовая маска, а все туда же экономить на спичках. Автор, сколько миллиардов записей надо окучить, чтобы стала заметна экономия диска на этих самых битах? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 09:18 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
Ivan_Pisarevsky, Увы биты достаются по наследству при конвертации Клариона в Огнептица. В таблицах куча полей с побитной "шифровкой". Вот и приходится изгаляться чтобы расписать их на разные столбцы. Всегда это делал перебором каждой строки + Делфи. Задался вопросом, а можно ли сразу запросом. Принципиально ответ уже получил - МОЖНО. Как я понял можно даже сразу update написать который махом все пропишет. Теперь буду "курить бамбук" и "грызть гранит науки", чтобы понять как эти битовые маски работают. Спасибо за примеры. Увы вопросы будут еще появляться и я буду их задавать ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 09:43 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
rdb_devPolesov, так и будем решать за студоту домашку? :) Неужели вы думаете, что если человеку что-то непонятно, - это студент которому лень в чем-то разбираться? Да мне тяжело давались и даются разные системы счисления. Но это не повод вешать клеймо "студота" и "домашка" ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 09:45 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrush> В таблицах куча полей с побитной "шифровкой". akrush> Вот и приходится изгаляться чтобы расписать их на разные столбцы. А, так это ты из гамна кофетку пытаешься сделать. Это дело бравое, Бог в помощь. Только не забудь потом оттестировать, чтобы не получилось, что перевёл рабочий (хоть и ужасный) гомнокод (БД) в красивый, но неправильный. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 10:07 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, Я проверяю. У меня есть контрольный список строк ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 10:48 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустамakrush> В таблицах куча полей с побитной "шифровкой". akrush> Вот и приходится изгаляться чтобы расписать их на разные столбцы. А, так это ты из гамна кофетку пытаешься сделать. Это дело бравое, Бог в помощь. Только не забудь потом оттестировать, чтобы не получилось, что перевёл рабочий (хоть и ужасный) гомнокод (БД) в красивый, но неправильный. В файл-серверных базах, видимо, обычное поведение. Экономили на размере самой базы, а индексы и так фигово работали (работают). Правильно делает, что схему данных меняет. Зачёт! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 11:35 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrush, если я не прав, приношу извинения! :) С системами счисления всё элементарно! В десятичной системе счисления по основанию 10 имеем следующие разряды числа: Разряд 0 (единицы): N*10 0 Разряд 1 (десятки): N*10 1 Разряд 2 (сотни): N*10 2 Разряд 3 (тысячи): N*10 3 и т.д., где N - значение в разряде от 0 до 9 В двоичной системе счисления по основанию 2 имеем следующие разряды: Разряд 0 (единицы): N*2 0 Разряд 1 (двойки): N*2 1 Разряд 2 (четвёрки): N*2 2 Разряд 3 (восьмёрки): N*2 3 и т.д., где N - значение в разряде 0 или 1 Как видим, двоичная система еще проще и установленные в 1 биты в машинном слове (16 бит) можно сконвертировать в десятичную систему по следующей таблице: Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 12:06 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
rdb_dev, Да неправда! Если в первом и втором бите стоят единицы, то в десятичной системе это 3 (три). Без побитовых операций никуда! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 12:47 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
KreatorXXI, что "неправда"? Если, к примеру, в установлены в 1 разряды 0,3,5,10, то это 1+8+32+1024=1065 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 13:08 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrushIvan_Pisarevsky, Увы биты достаются по наследству при конвертации Клариона в Огнептица. В таблицах куча полей с побитной "шифровкой". Вот и приходится изгаляться чтобы расписать их на разные столбцы. Я так и думал. Через это приходится проходить почти всем, кто успел наработать что-то полезное на плоских БД. Советую ещё подумать о том, чтобы организовать нормальную структуру - свести значения в нечисловых столбцах в таблицы-справочники и в столбцах рабочих таблиц использовать ссылки. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 13:36 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
rdb_dev, Это правда. Зачем таблица-то? Я просто не понял её назначения. Видимо, просто азы. Которые все знают. Но они неприменимы в современной реальной жизни. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 14:58 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
KreatorXXI, чтобы человеку, совершенно не знакомому с азами бинарной системы счисления, было проще ориентироваться - какой бит машинного слова какому десятичному числу соответствует без использования калькулятора в режиме "Программист". > Но они неприменимы в современной реальной жизни. Почему неприменимы? Что-то в битовой системе счисления принципиально изменилось? Для понимания принципов вполне подойдет. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 15:06 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
rdb_devкакой бит машинного слова какому десятичному числу соответствуетДля битовой маски бесполезные знания. rdb_devДля понимания принципов вполне подойдет.Человеку нужно кларион отфайрбёрдить, а не общие принципы обкатывать, вроде как. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 15:23 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
26.02.2018 15:23, WildSery пишет: > Человеку нужно кларион отфайрбёрдить хорошее выражение. ёмкое! Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 15:25 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
Спасибо всем кто откликнулся. Что-то начинает вырисовываться. Например если мне нужно прочитать только один бит (например 6) из 8, я делаю сначала смещение на 5 бит (bin_shr(relat,5)), а затем читаю значение 6 бита - bin_and(...,0x01). Если мне надо прочитать 4 бита, начиная с 5 позиции, я должен сместиться на 4 бита bin_shr(relat,4), а затем прочитать значение следующих 4 бит: bin_and(...,0x0f). Если я ошибаюсь - поправьте меня. Но на том примере, где мне это надо было, проверив контрольные значения, получается все правильно. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 17:03 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
Мимопроходящий, Краткость - сестра, да. akrush, авторЯ нашел ее и читал. Но не понял как :( Помогите примером пожалуйста авторЕсли я ошибаюсь - поправьте меня. Читай азы - битовые операции (прямо вот так можешь и вбивать в гугл). Не нужно никуда ничего двигать. Материала в сети, я думаю, вагон и тележка. И с картинками и с описанием. И даже видео. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 17:13 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrush, Всё верно. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 17:26 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrush, Вот так попробуй. Твоё число Value. Если bin_and (Value, 1) возвращает не ноль, то первый (нулевой) бит 1. Если bin_and (Value, 2) возвращает не ноль, то второй бит 1. Если bin_and (Value, 4) возвращает не ноль, то третий бит 1. Если bin_and (Value, 8) возвращает не ноль, то четвёртый бит 1. И т.д. На каждое восьмибитовое число нужно восемь раз наложить маску типа "00001000". Битовая операция "И" возвращает единицу, если оба числа с единицей (в смысле бита). ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 17:32 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
KreatorXXI, спасибо, но я так понимаю это больше подходит если мне надо сравнивать. а мне надо просто расписать все биты по столбцам и потом я от битовых полей хочу избавится. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 18:39 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrush> а мне надо просто расписать все биты по столбцам и потом я от битовых полей хочу избавится. Ну так и расписывай. firebird_smart_field_bit_1 = bin_and(clarion_shit_field, 1); firebird_smart_field_bit_2 = bin_and(clarion_shit_field, 2); firebird_smart_field_bit_3 = bin_and(clarion_shit_field, 4); firebird_smart_field_bit_4 = bin_and(clarion_shit_field, 8); ... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 22:09 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrushНапример если мне нужно прочитать только один бит (например 6) из 8, я делаю сначала смещение на 5 бит (bin_shr(relat,5)), а затем читаю значение 6 бита - bin_and(...,0x01).Во-первых, смещать вправо надо не на 5, а на 4, а во вторых - занафига? Тебе его надо проверить как флаг, а не превратить в числовое значение все биты слева, включая пятый. Выставленному в единицу пятому биту соответствует десятичное число 32 (см. таблицу) или шестнадцатеричное 0x10. Всё проще! Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2018, 09:14 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
WildSeryrdb_devкакой бит машинного слова какому десятичному числу соответствуетДля битовой маски бесполезные знания.Что, как не битовую маску в десятичном представлении, я использовал сообщением выше? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2018, 09:16 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
rdb_devakrushНапример если мне нужно прочитать только один бит (например 6) из 8, я делаю сначала смещение на 5 бит (bin_shr(relat,5)), а затем читаю значение 6 бита - bin_and(...,0x01).Во-первых, смещать вправо надо не на 5, а на 4, а во вторых - занафига? Тебе его надо проверить как флаг, а не превратить в числовое значение все биты слева, включая пятый. Выставленному в единицу пятому биту соответствует десятичное число 32 (см. таблицу) или шестнадцатеричное 0x10. Всё проще! Код: sql 1.
Мипардон! СИшная привычка не писать в операторе условия "> 0"... Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2018, 09:19 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
rdb_devВо-первых, смещать вправо надо не на 5, а на 4Чот я совсем зарапортавался... На 5! ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2018, 09:22 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
rdb_devили шестнадцатеричное 0x10 Как же неподецки может плющить с утра... 0x20, конечно же! ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2018, 09:33 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
Предварительный просмотр и перечитать. После каждой правки и с небольшим интервалом. P.S. Была с старом "Вокруг света" небольшая заметка о селькупах (северная народность). Называлась "Жду стою". Сбор в дорогу занимал два-три дня и несколько часов перед выездом полностью готовый путешественник просто сидел на нартах. Зачем?Жду, стою. Может я что забыл, может кому другому что понадобится. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2018, 09:43 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
rdb_devЧто, как не битовую маску в десятичном представлении, я использовал сообщением выше?Я о том и говорю, что ты один такой здесь. Если нужно найти N-ный бит, нормальные люди его формулой находят 2^(N-1), ну или битовым сдвигом bin_shr, а не по табличке пальцем ищут. У тебя, наверное, и в коде написано что-то вроде (для наглядности) ? Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2018, 09:57 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
WildSery, я нифига не понимаю. Какой еще "bit_number"? Если выставлено, скажем, три первых бита, надо в кейсе описать все 8 вариантов комбинаций? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2018, 10:24 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
WildSeryУ тебя, наверное, и в коде написано что-то вроде (для наглядности) ? Код: sql 1. 2. 3. 4. 5.
А, я понял - "bit_number", это счетчик сдвигов и для каждого сдвига ты предлагаешь описать условие в кейсе? Тогда не понятно, нафига городить огород с bit_and на каждый бит в отдельности. Уж проще, тогда, как-то так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Не многовато ли писанины? Куда проще: Код: sql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2018, 10:42 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
[quot rdb_dev] Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Так! Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2018, 11:14 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, так и у нас "посидим на дорожку" не спроста! :) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2018, 11:15 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
Вместо bin_and уже пошёл bit_and. Чем дальше в лес... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2018, 11:30 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
KreatorXXIВместо bin_and уже пошёл bit_and. Чем дальше в лес... Да, капец ваще! Не приведи Господь вам такую работёнку, как у меня сейчас... Полный [ЦЕНЗУРА]! ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2018, 11:57 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
rdb_devТогда не понятно, нафига городить огород с bit_and на каждый бит в отдельности. Уж проще, тогда, как-то так:Ну то есть ты признаёшь, что твоя "таблица десятичных значений" в реальной жизни не применима? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2018, 13:47 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
WildSeryrdb_devТогда не понятно, нафига городить огород с bit_and на каждый бит в отдельности. Уж проще, тогда, как-то так:Ну то есть ты признаёшь, что твоя "таблица десятичных значений" в реальной жизни не применима?А это, по твоему что, как не та же самая связка "номер разряда"<=>"десятичное значение"? Код: sql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2018, 14:14 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
WildSery, лучше бы поправил мою потенциальную ошибку, которая может всплыть при установленном в smallint самом старшем бите (при отрицательных числах), помятуя про конвертацию smallint в bigint. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2018, 15:31 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
rdb_dev, Ты тут дурочку валяешь, а мне ещё и поправлять? Ты знаешь, куда. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2018, 11:44 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
WildSery, не всёж банхаммером махать! ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2018, 14:53 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
rdb_dev, Скорее, веником. А иногда и совочком. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2018, 15:07 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
WildSery, а как ты хотел? Иногда за гостями и прибраться нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2018, 15:48 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
Чтобы не плодить темы, хочу продолжить тут. Суть вопроса. Мне надо, как выразился WildSery WildSery... нужно кларион отфайрбёрдить ... Пользуюсь компонентом SMImport. Его я обсуждать не хочу. Компонент нормально импортирует данные, поля массивы передает как стринг с разделителем ; и мне этого достаточно. Но возникла такая проблема. 1. Кларион хранит дату как число дней от 28/12/1800, т.е. сегодняшнее число, 26/04/2018, хранится как 79377. для того чтобы преобразовать в нормальное число формата ФБ мне надо выполнить dateadd(day,-36161,ZVDATA) 2. При импорте, если поле пустое, компонент ничего не передает и в поле, соответственно null - для стринга мне надо сделать просто пусто '', делаю это так: update ADDSUM set OWN_NUM='' where OWN_NUM is null; В целом все нормально, но на больших таблицах эта обработка ЖУТКО тормозит. Посмотреть статистику вижу в версиях количество равное количеству строк в таблице. Суть вопроса следующая: должна ли создаваться версия если я единственный подключенный пользователь. Думал компонент глючит, проверил. Компонент комитит каждую строку (это я обсуждать пока не буду, автору напишу). После импорта даже пробовал отключаться и подключаться к БД. Все равно создаются версии. Может я что-то напутал и версии ДОЛЖНЫ создаваться. Пните в нужном направлении. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2018, 21:42 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrush, Забыл уточнить - версия ФБ Firebird-3.0.2.32703_0_Win32 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2018, 21:44 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrush, С версиями вопрос отпал. В Эксперте попробовал выполнить тот же набор команд на апдейт - версии тоже появились. Так что сам где-то что-то напутал. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2018, 22:01 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrushПните в нужном направлении. http://www.ibase.ru/transactions/ обязательное чтение. До просветления. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2018, 22:08 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrushВ целом все нормально, но на больших таблицах эта обработка ЖУТКО тормозит.Размер кеша какой ? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2018, 23:35 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrushВсе равно создаются версии. что за стенания? при update записи создается версия. И при delete. А как иначе? Обновили 100к записей - будет 100к записей и 100к версий. Это нормально. Ненормально, это когда активные транзакции препятствуют превращению версий в мусор и их уборке, и когда у одной записи десятки, сотни, тысячи или вообще миллионы версий. Вот тогда - да, может тормозить. akrushСуть вопроса следующая: должна ли создаваться версия если я единственный подключенный пользователь. У Firebird нет "однопользовательского" режима. Один, сто, тыща юзеров - все делается всегда одинаково. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 01:03 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrush, "...нужно кларион отфайрбёрдить..." В 96-м году встала такая задача. В итоге появилась консольная прога, которая берет произвольный файл *.dat и конвертит его в *.txt (за исключением memo-полей). Плюсом рожает файлик со следующим содержимым: Код: sql 1. 2. 3. 4. 5. 6.
Скармливаем этот файл фаеру и получаем внешнюю таблицу. Все дальнейшее зависит от фантазии. К примеру: Код: sql 1. 2.
Итог работы: ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 07:17 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
hvlad, Влад, все по умолчанию. Импортируется суммарно, в данном тесте, более 10млн строк в 25 таблиц. Могут быть варианты и где будет более 20млн. Подскажите какие настройки подправить чтобы ускорить процесс, если возможно ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 08:09 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
LocksmithPC, Спасибо за подсказку. Попробую. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 08:10 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrushПопробую. ftp://locksmithpc.asuscomm.com/dat2txt.7z ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 09:23 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrush, А у Вас тип файла БД dat или tps? Эксперт dat закачивает сам. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 10:23 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
KreatorXXI, эксперт вроде дох как раз на полях массивах. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 10:25 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
LocksmithPC, Я знаю, что работает. Глубоко не копал, массивы редко используют. И вообще, ИМХО, использовать массивы в БД - дурацкое дело. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 10:33 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
KreatorXXI, пробую сейчас грузить 600 Мб dat-файл. скорость примерно 100 записей в секунду. печаль. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 10:37 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
LocksmithPC, Что Вы там в 600 мегов запихали? Есть офигительные МЕМО-поля? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 10:55 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
KreatorXXI, никаких мемо, только цифры. большой архив со времен царя гороха ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 11:02 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrushВ целом все нормально, но на больших таблицах эта обработка ЖУТКО тормозит ... Подскажите какие настройки подправить чтобы ускорить процессУвеличить кеш, подумать о наличии лишних индексов, триггеров. Избавиться от коммита каждой строки. Убедиться, что используются препарированные запросы. FW=OFF на время импорта, если нет противопоказаний. Всё это банально и давно всем известно. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 11:04 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
LocksmithPC, Сколько записей? Мне просто интересно. Было принято делить на периоды. Конечно для файл-серверной системы 600 мегов - запредельно много. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 11:11 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
KreatorXXI, ~700 к записей. 122 поля. 99% double precision ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 11:23 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
LocksmithPCKreatorXXI, ~700 к записей. 122 поля. 99% double precision Реально круто! Особенно, 122 поля. Эксперту ой как тяжело это переварить. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 11:39 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
KreatorXXI, наверняка не предел по кол-ву полей. лень смотреть остальные таблицы ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 12:04 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
hvladakrushВ целом все нормально, но на больших таблицах эта обработка ЖУТКО тормозит ... Подскажите какие настройки подправить чтобы ускорить процессУвеличить кеш, подумать о наличии лишних индексов, триггеров. Избавиться от коммита каждой строки. Убедиться, что используются препарированные запросы. FW=OFF на время импорта, если нет противопоказаний. Всё это банально и давно всем известно. Так как это у меня промежуточная таблица только для импорта Кларион-ФБ индексов нет совсем. Вообще нет ничего кроме таблиц. ни ограничений на поля, ничего. Подскажите - какие параметры надо поменять чтобы увеличить кеш. Подскажите точное название параметра FW комит выставил каждые 5000 записей. Раньше я ошибся был каждые 300 Данные (даты, нул в строках) редактирую через скрипт, просто список команд которые надо выполнить. Последняя команда commit; ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 14:27 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrush, при инсерте кэш никак не влияет. Кэш вообще надо выставлять сообразно архитектуре и экспериментально - классик от 512 до 2048, суперклассик от 512 до 4096, суперсервер от 8192 до половины RAM. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 14:30 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrushТак как это у меня промежуточная таблица только для импорта Кларион-ФБ индексов нет совсем. Вообще нет ничего кроме таблиц. ни ограничений на поля, ничего. Подскажите - какие параметры надо поменять чтобы увеличить кеш.Если индексов нет, то увеличение кеша ничего не даст. akrushПодскажите точное название параметра FWForced Writes ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 14:49 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
kdvakrush, при инсерте кэш никак не влияет. Кэш вообще надо выставлять сообразно архитектуре и экспериментально - классик от 512 до 2048, суперклассик от 512 до 4096, суперсервер от 8192 до половины RAM. Влад написал увеличить, поэтому и спрашиваю. Там не только инсер, а еще и изменение дат (-36161 день) и все текстовые поля замена Нул Размер страницы 8192 Архитектура: ServerMode = Super Платформа: Вин10 32бита Все параметры по умолчанию. подскажите может что-то изменить. Там нашел параметр #CpuAffinityMask = 0. Он влияет на использование именно процессора или на ядра. Подскажите, плиз :'( ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 14:57 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrush, у меня проц i7, 4 потока ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 14:59 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrushТам нашел параметр #CpuAffinityMask = 0. Он влияет на использование именно процессора или на ядра. Подскажите, плиз :'( это не трогай! ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 15:12 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrush.......... Влад написал увеличить, поэтому и спрашиваю. ......... Ну он еще писал Убедиться, что используются препарированные запросы.и это пожалуй сейчас важнее кеша ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 15:27 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
Да какие препарированные запросы, он же написал "текстовый скрипт". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 15:29 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
m7m, Препарированных запросов нет. Есть скрипт, выглядит вот так (по одной из таблиц): update APPLIC set DATA_SG=dateadd(day,-36161,DATA_SG);'); update APPLIC set DATA_RG=dateadd(day,-36161,DATA_RG);'); update APPLIC set DATA_R=dateadd(day,-36161,DATA_R);'); update APPLIC set DATA_C=dateadd(day,-36161,DATA_C);'); update APPLIC set DATA_S=dateadd(day,-36161,DATA_S);'); update APPLIC set DATA_E=dateadd(day,-36161,DATA_E);'); update APPLIC set DATA_X=dateadd(day,-36161,DATA_X);'); update APPLIC set DATA_Y=dateadd(day,-36161,DATA_Y);'); update applic set data_sg=null where data_sg<cast('01.01.1950' as DATE);'); update applic set data_rg=null where data_rg<cast('01.01.1950' as DATE);'); update applic set data_r=null where data_r<cast('01.01.1950' as DATE);'); update applic set data_c=null where data_c<cast('01.01.1950' as DATE);'); update applic set data_s=null where data_s<cast('01.01.1950' as DATE);'); update applic set data_e=null where data_e<cast('01.01.1950' as DATE);'); update applic set data_x=null where data_x<cast('01.01.1950' as DATE);'); update applic set data_y=null where data_y<cast('01.01.1950' as DATE);'); update APPLIC set SURN1='' where SURN1 is null;'); update APPLIC set SURN2='' where SURN2 is null;'); update APPLIC set F_NAM='' where F_NAM is null;'); update APPLIC set M_NAM='' where M_NAM is null;'); update APPLIC set INDX='' where INDX is null;'); update APPLIC set BLD_NUM='' where BLD_NUM is null;'); update APPLIC set CORP_NUM='' where CORP_NUM is null;'); update APPLIC set FLAT='' where FLAT is null;'); update APPLIC set PHONE='' where PHONE is null;'); update APPLIC set PLACE='' where PLACE is null;'); update APPLIC set RIZNE='' where RIZNE is null;'); update APPLIC set SUR_NAM=SURN1||SURN2;'); commit; ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 15:37 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrush, в конце примера запроса лишняя " ');" просто копипастил из делфей ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 15:38 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrush, ну вот для update кеш уже важен. Кстати вот для этого Код: sql 1. 2. 3.
можно и в один запрос собрать Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 15:43 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrushЕсть скрипт, выглядит вот такВсе эти апдейты нужно заменить одним, это же ужас-ужас, а не скрипт ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 16:22 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
"APPLIC" - Это та самая External table - или уже таблицы внутри БД Firebird ? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 17:07 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
hvladВсе эти апдейты нужно заменить одним Это не так просто, там зависимые значения.... Код: sql 1. 2. 3. 4.
а это, кажетсЯ, как раз в FB2 правили, чтобы "в лоб" не работало как в IB времена. и после переписывания с "денормализацией" скрипт будет запутанный до чертиков. Это на PSQL надо делать, бежать в цикле, в цикле неспеша и с удобством отрабатывать временные переменные, в конце цикла из них один UPDATE по курсору (fb2) или по RDB$DB_KEY (fb3) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 17:11 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
Arioch, она никак не может быть External table, ибо для них UPDATE не поддерживается ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 17:12 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrushupdate APPLIC set SUR_NAM=SURN1||SURN2;'); "ПетровВодкин" слитно, без пробелов и дефисов ? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 17:12 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
Симонов Денис, ну тогда эти преобрзаования надо делать на этапе импорта из ET в SQL-таблицу. PSQL-блок, FOR-SELECT из ET - и уже чистые, переработанные записи в INSERT. И возможно иногда внутри этого цикла делать snapshot, не знаю ,поможет ли это кэшу или наоборот. или можно в FOR-SELECT из ET добавлять FIRST/SKIP и гнать в автономных транзакциях по 10 тыс. строк ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 17:14 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
AriochЭто не так просто, там зависимые значения.... Да, придётся документацию про COALESCE() читать. Это непосильная задача для аффтара. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 17:25 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, дело не в поиске функции, а в копипасте, в денормализации кода вместо одного вызова case/coalesce/where на столбец - придется делать два. КАЖЕТСЯ больше там внутренних зависимостей нет, если я не пропустил и если в скрипт больше ничего не добавится. небольшая копипаста управляема, ЕСЛИ не понадобится усложнить задачу иначе копипаста может пойти в 2 слоя, три слоя и разрастатся соответственно ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 17:45 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
Ariochakrushupdate APPLIC set SUR_NAM=SURN1||SURN2;'); "ПетровВодкин" слитно, без пробелов и дефисов ? Извините, но я не приводил структуру таблицы. В кларион поле фамилия разбито на 2: 7 символов (и по ним строится ключ для поиска по фамилии) + 23 символа остаток от фамилии. Вот я из и прикручиваю слитно. Вот структура временной таблицы (в которую тупо импортирую, а потом будет разбор по нескольким таблицам): CREATE TABLE APPLIC ( APP_NUM BIGINT, CAL_NUM SMALLINT, CAL_LAST SMALLINT, US_ID SMALLINT, SUR_NAM VARCHAR(30), SURN1 VARCHAR(7), SURN2 VARCHAR(23), F_NAM VARCHAR(25), M_NAM VARCHAR(20), INDX VARCHAR(6), VUL_COD INTEGER, BLD_NUM VARCHAR(7), CORP_NUM VARCHAR(2), FLAT VARCHAR(9), PHONE VARCHAR(7), PLACE VARCHAR(1), RIZNE VARCHAR(10), NUMB SMALLINT, INCOM DECIMAL(9,2), OWN_FRM SMALLINT, HOSTEL SMALLINT, CM_AREA DECIMAL(6,2), NM_AREA DECIMAL(6,2), BALC DECIMAL(5,2), AD_AREA DECIMAL(5,2), FROG DECIMAL(5,2), FRUG DECIMAL(5,2), FL_PAY DECIMAL(9,2), NM_PAY DECIMAL(9,2), NM_PAY1 DECIMAL(9,2), CFG_JKP SMALLINT, CFG_SGTP SMALLINT, DEBT SMALLINT, RES1 SMALLINT, RES2 INTEGER, RES3 INTEGER, RES4 SMALLINT, SUBSID DECIMAL(9,2), SUBSUD DECIMAL(9,2), SUBSID1 DECIMAL(9,2), RITE1 INTEGER, RITE2 INTEGER, RITE3 INTEGER, RITE4 INTEGER, RITE5 INTEGER, REEK BIGINT, DATA_SG DATE, DATA_RG DATE, DATA_R DATE, DATA_C DATE, DATA_S DATE, DATA_E DATE, DATA_X DATE, DATA_Y DATE, MARK SMALLINT, STOP SMALLINT ); В этой таблице 56 столбцов, из них 12 битовых полей от 4 до 16 значений записано по битно. Если их расписать все по полям (я пробовал) получается более 150 столбцов. Сама таблица уже разбита на несколько ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 17:47 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrush, Имею ввиду в финальной БД таблица APPLIC разбита на 4 таблицы, но финальная структура еще обсуждается. Если у вас всех можно попросить совета, какую структуру лучше всего сделать - я с удовольствием поделюсь ссылкой на структуру (она у меня в HTML) и с еще большим удовольствием выслушаю советы. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 17:53 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
1. Преобразования данных в вашем скрипте - тривиальны 2. Преобразования каждой конкретной записи - если брать только расчёты, за вычетом чтения с диска и записи на диск - практически мгновенны 3. Ваша пробелма - огромный объём данных и многократная их обработка 4. Каждая команда вашего скрипта, если очень грубо, проводит полное копирование (в смысле чтение+запись) таблицы. А команд 28. Вывод - вам нужно объединить импорт данных в Firebird и преобразование (расчёт). Тогда копирование данных будет выполняться один раз, вместо 28. Прочитали строку из External Table в переменные, в тех же переменных преобразовали, вставили в таблицу Firebird уже готовые преобразованные данные, перешли к следующей строке. 21374800 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 20:16 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrushВот я из и прикручиваю слитно. В частности, чтобы их "прикручивать слитно" совершенно не нужны в таблице APPLIC два столбца SURN1 и SURN2 - зачем они там? Оставьте только SUR_NAM. И записывайте в него уже посчитанное объединённое значение. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 20:18 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамДа какие препарированные запросы, он же написал "текстовый скрипт". Ну вот в нём и проблема ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 20:33 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
AriochakrushВот я из и прикручиваю слитно. В частности, чтобы их "прикручивать слитно" совершенно не нужны в таблице APPLIC два столбца SURN1 и SURN2 - зачем они там? Оставьте только SUR_NAM. И записывайте в него уже посчитанное объединённое значение. не могу. Компонент импорта тупо гонит все в таблицу. Пока еще не понял как перехватить "на лету" каждую запись и преобразовать как мне надо. Автор компонента подсказывал - на выходных попробую все-таки понять как. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 21:54 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrush, Этот автор исходники компонента тебе дал? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 22:25 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrush... Пока еще не понял как перехватить "на лету" каждую запись и преобразовать как мне надо. .... Зачем на лету Насколько я понял все загоняется в промежуточную таблицу а потом будет раскидываться по другим ну вот во время этого "раскидывания" и делай все что надо (восстанавливай Фамилию, устанавливай даты ну и остальное что надо) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 22:26 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
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.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2018, 05:44 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
LocksmithPC, Помнится, у TClarionDataSet были какие-то проблемы как раз с массивами. Это не так? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2018, 10:21 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
WildSery, Поискал сейчас свежую версию. Последнее что было CDS_D2010. "CLARION TOOLKIT AGE II" "No Clarion Arrays and Indexes" :( тогда остается: Код: powershell 1. 2.
на выхлопе будет Код: powershell 1. 2. 3. 4. 5. 6. 7.
уж такую дрянь прочитать и залить куда надо рубля не стоит. правда остается засада с запятыми внутри "текстовых полей", но это уже мелочи. из минусов: долго и 16 бит. на 64-х битной ОС не запустить. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2018, 10:34 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
LocksmithPC, До Clarion Toolkit 2 был ещё 1. Он не является наследником TDataSet, что делает несколько нетривиальным его использование, зато он низкоуровневый, и смутно помнится, что вот он-то как раз и массивы мог читать. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2018, 10:59 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
WildSery, У меня только 2 версии. От Кудрявцева и Захребеткова. Первую версию не видал. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2018, 11:04 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
LocksmithPC, У Кудрявцева была более ранняя, на основе которой он потом этот датасет и пытался запилить, но бросил, не доделав. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2018, 11:13 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
Вот, например. 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. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2018, 11:23 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
LocksmithPCWildSery, Поискал сейчас свежую версию. Последнее что было CDS_D2010. "CLARION TOOLKIT AGE II" "No Clarion Arrays and Indexes" :( тогда остается: Код: powershell 1. 2.
на выхлопе будет Код: powershell 1. 2. 3. 4. 5. 6. 7.
уж такую дрянь прочитать и залить куда надо рубля не стоит. правда остается засада с запятыми внутри "текстовых полей", но это уже мелочи. из минусов: долго и 16 бит. на 64-х битной ОС не запустить. Ха, как бы не так. CCVT не видит массивов в принципе. Показывает только первый элемент. Эту утилиту я знаю уже 16 лет. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2018, 12:24 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrush, Если бы утилита CCVT нормально все конвертировала - я бы не занимался промежуточной конвертацией, а сразу же из ДБФ разгонял туда куда мне надо ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2018, 12:30 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrush, Это чо, родная утилита не выплевывает родные поля из родных таблиц? :)) Слава б-гу АРМ на кларионе умер 4 года назад :) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2018, 12:35 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
LocksmithPCakrush, Это чо, родная утилита не выплевывает родные поля из родных таблиц? :)) Слава б-гу АРМ на кларионе умер 4 года назад :) Увы, да. Родная утилита не конвертирует поля массивы :'( Пришлось подкопить денег на компонент который нормально видит поля массивы. Афтар даже сказал что доработает импорт двумерного массива. Есть в одной таблице массив DIM(2,18) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2018, 13:52 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrush, Можешь на почту (LocksmithPC@mail.ru) кинуть небольшую табличку с такими полями, если там ПД нет, конечно? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2018, 14:09 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrushне могу. Компонент импорта тупо гонит все в таблицу. 1) почему бы не использовать какую-нибудь внешнюю таблицу ? бинарный файл, например ? 2) даже если обязательно из компонента писать внутрь обычной таблицы Firebird - не нужно обновлять "по месту" и много раз подряд. Сделай в FB две таблицы - одна для импорта, вторая для очищенных значений. APPLIC1 и APPLIC2 А дальше как я писал выше. Ну пусть APPLIC1 будет не external table, а обычной таблицей, жаль, ну что сделаешь. Но сам метод точно такой же. Идешь по "импортнутой" таблице строчка за строчкой в цикле и по одной строке окончательно подготовленнйо записываешь в "очищенную" таблицу. Потом "импортнутую" таблицу чистишь или даже удаляешь. Твой главный враг - многократные пробежки по огромной таблице. Твоя главная задача - сделать пробежек так мало, как это возможно. 1, 2, 3... Чем меньше - тем быстрее. Тебе нужно написать PSQL блок (анонимный или stored procedure) который будет делать ВСЮ обработку каждой строчки сразу, не разбивая на шаги. Чтобы копировать в один проход, а не в 28 проходов. Я просто не знаю, что тут ещё можно разжёвывать дальше. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2018, 14:38 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
AriochА дальше как я писал выше. Ну пусть APPLIC1 будет не external table, а обычной таблицей, жаль, ну что сделаешь. Но сам метод точно такой же. Идешь по "импортнутой" таблице строчка за строчкой в цикле и по одной строке окончательно подготовленнйо записываешь в "очищенную" таблицу. Потом "импортнутую" таблицу чистишь или даже удаляешь. Можно GTT. Я именно так и делаю сложный импорт. В GTT идут сырые данные, а дальше курсор по GTT и их очистка и даже распихивание по нескольким таблицам. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2018, 15:11 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
Симонов Денис, вряд ли. я думал, но мне не понравилось :-P Я не знаю, насколько хорошо работает GTT с огроооомными объёмами данных. А главное, он описывает свой SMImport как некий черный ящик, в работу которого он вмешаться не может. И заменить его не может. И тут возникает вопрос, можно ли заставить его SMImport и запуск скрипта-распихивателя потом проходить через одно и то же соединение? Или SMImport делаёт своё соединение, а скрипт - своё ? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2018, 15:30 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
AriochСимонов Денис, вряд ли. я думал, но мне не понравилось :-P Я не знаю, насколько хорошо работает GTT с огроооомными объёмами данных. А главное, он описывает свой SMImport как некий черный ящик, в работу которого он вмешаться не может. И заменить его не может. И тут возникает вопрос, можно ли заставить его SMImport и запуск скрипта-распихивателя потом проходить через одно и то же соединение? Или SMImport делаёт своё соединение, а скрипт - своё ? Как работает компонент: 1. Задаю имя исходной таблицы, имя таблицы-приемник, указываю Датасет. 2. Задаю соответствие столбцов а потом, по сути только несколько строк: Код: sql 1. 2. 3. 4. 5.
В теории компонент сам все комитит, но комит вызываю на всякий случай. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2018, 18:41 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrush, Модераторам спасибо. Сообщение писал быстро, забыл оформить в теги. Сообщение можно удалить ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2018, 20:28 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrush, вставка большого количества строк в SQL базы данных через TDataset.Insert / TDataSet.Post может быть весьма долгой (зависит от того, работает ли TDataSet честно "в лоб" или использует хитрости) Что именно тормозит, скрипты после fbTImport.Close ? или процесс от StartTransaction до Close ? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2018, 20:55 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
Arioch, Мне кажется что сильно тормозят скрипты. Засек время. Всего импортируется 6млн строк. Время 1ч30мин. Получается в среднем - ок. 1111 записей в секунду. Думаю что нормально. Когда пойду дальше - переносить из временной БД в основную с обработкой, тогда посмотрим. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2018, 14:32 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrush, Немного не точно написал: импортируется и обрабатывается скриптами. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2018, 14:33 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrush, Ты не ответил, - исходники используемого компонента импорта у тебя есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2018, 15:08 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
Vlad Fakrush, Ты не ответил, - исходники используемого компонента импорта у тебя есть? есть ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2018, 17:43 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrush, Вот. А теперь представь картину, что опытной рукой его, скорее всего, не более чем пятью строками можно поправить с тем, чтобы он для пустых строк сразу вставлял пустые строки, а даты сразу же вставлял с необходимым смещением. И что тогда останется от того твоего скрипта постобработки и обмусоливаемое "проблемы" в целом? Представил? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2018, 17:59 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
Vlad Fakrush, Вот. А теперь представь картину, что опытной рукой его, скорее всего, не более чем пятью строками можно поправить с тем, чтобы он для пустых строк сразу вставлял пустые строки, а даты сразу же вставлял с необходимым смещением. И что тогда останется от того твоего скрипта постобработки и обмусоливаемое "проблемы" в целом? Представил? Представил. Допустим со строками можно попробовать. А вот с датами проблема. Даты хранятся в типе LONG и как при импорте определить это число или дата? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2018, 18:08 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrush, Не имея перед глазами исходников трудно говорить более предметно, но если ты расшифруешь как именно в нем "задается соответствие столбов", то могу и пофантазировать, так сказать, на кончике пера. Однако, прошу заметить, что уже за счет одного лишь сокращения последующего апдейтов строк твой послескрипт уже полегчает как бы не не треть (или больше?). ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2018, 21:49 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
Vlad F, Всем спасибо за подсказки. Спросил у автора. Оказывается можно сразу на нужное поле поставить обработку перед вставкой. Так что лишние обработки скриптами ушли в прошлое. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2018, 22:25 |
|
|
start [/forum/topic.php?all=1&fid=40&tid=1561125]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
55ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
124ms |
get tp. blocked users: |
2ms |
others: | 16ms |
total: | 244ms |
0 / 0 |