|
|
|
Выгрузка из базы
|
|||
|---|---|---|---|
|
#18+
Кареглазая_зая, Загружаете вы или они? И имеется ли вариант написать на том же Delphi для них свой загрузчик? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2018, 20:25 |
|
||
|
Выгрузка из базы
|
|||
|---|---|---|---|
|
#18+
Vlad F, они. Какой загрузчик? Мы можем передать только обезличенные данные, по сути в любом формате ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2018, 08:48 |
|
||
|
Выгрузка из базы
|
|||
|---|---|---|---|
|
#18+
Кареглазая_зая, Если в любом, то сможете ли передать (с тем, чтобы они потом переварили) в cds-формате, который есть ClientDataset.SaveToFile()? Тогда бы все сильно упростилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2018, 08:58 |
|
||
|
Выгрузка из базы
|
|||
|---|---|---|---|
|
#18+
Кареглазая_зая, https://stella-npf.ru/download/zls_sql-exe/ Модератор: Тема перенесена из форума "Firebird, InterBase". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2018, 09:00 |
|
||
|
Выгрузка из базы
|
|||
|---|---|---|---|
|
#18+
1 - вынести присвоение текстов запросов за цикл 2 - не переоткрывать файл на каждую строчку 3 - закомментировать WriteString и посмотреть, сколько займет выборка, чтобы понять, что тормозит именно она 4 - выборка из одной БД по набору ключей из другой БД, на самом деле, не так уж тривиальна. Пока что мне приходит в голову а) генерация списка из 10-20 значений для подстановки в select .. where .. in (..,..,..) - чисто клиентское решение, но не особо хорошее б) добавление всех ключей во временную таблицу в БД2 и потом уже выборка одним запросом - потребует изменений в БД ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2018, 10:44 |
|
||
|
Выгрузка из базы
|
|||
|---|---|---|---|
|
#18+
А есть возможность сначала сделать средствами самой базы результирующую таблицу и потом тупо выбирать ее в TStringList и сохранять через TStringsList.SaveToFile? Если прямолинейно подходить и задача разовая, то я бы, наверное, именно так и начал. Ну и компилил в 64 бита, т. к. пугает перспектива Out of memory. Вариант, порезать кусков на 10 и потом склеить. Для TStringList сразу ставить нужную емкость. При обращении к полям на таких объемах разумеется никаких FieldByName. Склейку можно делать через TStringBuilder, но что-то мне подсказывает выигрыш от него будет ничтожен на фоне затрат на запись в файл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2018, 13:37 |
|
||
|
Выгрузка из базы
|
|||
|---|---|---|---|
|
#18+
Правильное замечание насчет FieldByName, но это всё копейки на фоне 15М выполнений запросов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2018, 14:01 |
|
||
|
Выгрузка из базы
|
|||
|---|---|---|---|
|
#18+
Поэтому и говорю, что лучше сначала создать в самой базе одну таблицу, которую можно экспортировать элементарным перебором. При этом у меня вопросы относительно того, как себя поведет тот же TStringList на 15 млн строк тоже есть. Я недавно делал простейший самоочищающийся лог через TMemo, изначально у меня при превышении N строк удалялась нулевая, но это даже при 1000 строчек запросто вгоняло проц в 100% загрузку при отправке в Memo полусотни строк в секунду. Просто на перераспределении памяти и переборе всех этих строчек с их счетчиками ссылок. Автор не пишет, какая у нее версия Delphi, здесь я вижу потенциальную подлянку, что в базе могут быть обычные строки, а в Delphi юникодовые. Или наоборот. Возможно, есть смысл, сразу выделить память под короткие строки, если их достаточно, и потом ручками через Stream писать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2018, 14:21 |
|
||
|
Выгрузка из базы
|
|||
|---|---|---|---|
|
#18+
Василий 2на фоне 15М выполнений запросов Да их тут даже не 15М, а 30М... к БД1 тоже каждый раз обращение. Эту выборку надо объединить, сразу вычерпывая в dsetReestr2 все нужные поля. То есть Код: pascal 1. 2. 3. 4. 5. На месте "(здесь думать дальше)" - уже более интересные вещи. Как ни выжимай скорость, один запрос со всей обвязкой займет пусть 100 мс. 15М таких запросов - 17 суток. Поэтому надо всеми силами сокращать количество запросов. Для этого надо знать, доступно ли изменение схемы БД2, и вообще саму схему. К примеру, № полиса - разве не уникальное значение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2018, 14:22 |
|
||
|
Выгрузка из базы
|
|||
|---|---|---|---|
|
#18+
BeltarПри этом у меня вопросы относительно того, как себя поведет тот же TStringList на 15 млн строк тоже есть. Зачем стринглист? Это лишняя прослойка. Обычный WriteLn (без открытия-закрытия на каждую строку, конечно) и всё. Ну или FileStream, если хочется более модного. Такие объемы хранить стоит только в крайнем случае, обычно их гоняют поточно авторПоэтому и говорю, что лучше сначала создать в самой базе одну таблицу, которую можно экспортировать элементарным перебором. Именно. Либо целиком, либо по кускам, если памяти не хватает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2018, 14:27 |
|
||
|
Выгрузка из базы
|
|||
|---|---|---|---|
|
#18+
Ничего быстрее WriteLn нет и не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2018, 14:39 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39735415&tid=2040100]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
175ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
| others: | 243ms |
| total: | 521ms |

| 0 / 0 |
