Re: APPEND FROM или APPEND BLANK | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
> ***.ftp растет по геометрической прогрессии
Чудесным образом пробла решилась, походу чтоли? ) |
Re: APPEND FROM или APPEND BLANK | |
---|---|
Dron2003 Автор Сообщений: 81 Дата регистрации: 14.11.2008 |
Да, через INSERT ... select... *.ftp не раздувается. Но я не соображу как мне теперь перенести только те записи, которые удовлетворяют запросу. |
Re: APPEND FROM или APPEND BLANK | |
---|---|
PaulWist Сообщений: 14621 Дата регистрации: 01.04.2004 |
PS звёздочку использовать не хорошо, лучше перечислить поля явным образом и для полной уверенности поля в select привести к явному типу, что бы не нарваться на особенности нулевого прогона. ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) Исправлено 1 раз(а). Последнее : PaulWist, 21.12.17 22:41 |
Re: APPEND FROM или APPEND BLANK | |
---|---|
Dron2003 Автор Сообщений: 81 Дата регистрации: 14.11.2008 |
Ура!Всё заработало!Ребята, спасибо!
|
Re: APPEND FROM или APPEND BLANK | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Удовлетворяют запросу те записи, которые удовлетворяют запросу, мое ) |
Re: APPEND FROM или APPEND BLANK | |
---|---|
Crispy Сообщений: 18571 Дата регистрации: 16.05.2005 |
В подобных ситуациях специально для мемо-полей есть дополнительный параметр команды паковки. Т.е. в таких случаях надо паковать таблицу не командой PACK, подчищающей файл dbf от удаленных записей, а командой с параметром: PACK MEMO, которая как раз и удаляет все неиспользованное пространство из fpt-файла. ------------------ В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) |
Re: APPEND FROM или APPEND BLANK | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Крайне маловероятно что в клиппере была такая команда, т.к. в самом фоксе она появилась лишь в VFP8... На самом деле это зависит от режима открытия таблицы, и размера "старого" и "нового" содержимого мемо-поля. В shared режиме любое изменение мемо поля приводит к созданию нового блока в fpt файле. Он "распухает". Конечно же не "удваивается", просто старое содержимое этого поля остаётся на месте, а новое добавляется. В exclusive режиме некоторые изменения мемо поля производятся "поверх", т.е. записываются физически на то же самое место в fpt файле. Это произойдёт если размер "нового" содержимого укладывается в размер блока с текущим содержимым (грубо говоря, длина строки будет той же или меньшей, хотя на самом деле она может быть и чуть больше - размер блока fpt файла зависит от SET BLOCKSIZE на момент создания таблицы, по умолчанию это 64 байта, так что отняв 8 байт "заголовка" получим что, к примеру, замена строки из 10 символов на строку из 20 символов пройдёт "поверх", без увеличения размера fpt. Но вот уже строка размером 57 символов превысит размер блока, и фокс выделит под это поле новое место, а старое останется как "мусор"). Ещё фокс "перепишет" старый блок (при необходимости увеличив его размер, но таки не породив "мусора"), если он последний "физически" в fpt поле. Это одна из причин почему в старые времена для особо "нагруженных" систем сооружали всякие хитрые структуры данных но НЕ использовали мемо поля (нагруженные - значит что невозможно производить периодическую упаковку - как dbf+fpt, так и "только fpt файла"). С удалёнными записями то в принципе работать можно - RECALL и заменил содержимое полей - вместо INSERT. Стратегия "повторного использования записей". К сожалению с fpt такой трюк не проходит... PACK очищает И dbf И fpt файлы. В dbf он убирает удалённые записи, в fpt убирает "мусор" - старые "версии" мемо полей. PACK MEMO оставляет в dbf удалённые записи, только убирая "мусор" из fpt. При этом он, естественно, оставляет там мемо поля связанные с "удалёнными" записями в dbf - убирает только "старые версии". Ну и да, он конечно же вносит изменения в dbf файл (т.к. там хранятся адерса блоков из fpt файла, а при "сжатии" эти адреса имзеняются) и как и "просто PACK" требует монопольного открытия таблицы. Я бы сказал что у PACK MEMO по сравнению с просто PACK очень специфическая область применения - его следует использовать только тогда, когда НЕОБХОДИМО чтобы в dbf файле остались удалённые записи - т.е. когда "удаление" используется не по назначению. Не для того чтобы навсегда избавиться от информации, а только как своего рода "пометка" записей. Но это IMHO плохая идея - для любого рода пометки записей стоит использовать явно описанные поля (логическое поле в частности), а не служебный "признак удаления". ------------------ WBR, Igor |
© 2000-2024 Fox Club  |