-
> Виталий Панасенко © (27.08.08 15:55) [17] > Да и, кажись, можно тупо указать SourceDB=c:\, а затем "плясать" > точно, так же, как и от алиаса БДЕ.. select * from 'c:\dbf\dbf.dbf'
Представляю, как бы выглядели мои связанные многотабличные запросы :)
> select канает, ZAP - нет
Так и чего мне тогда копья ломать? OLEDB все же роднее для ADO.NET. Вот если бы параметрические запросы заработали...
-
> Сергей М. © (27.08.08 16:29) [19]
Просто "лобуда" типа PACK - канает
-
> Просто "лобуда" типа PACK - канает
А завтра, немаловероятно, автору потребуется, скажем, реиндексация. А "просто "лобуда" типа REINDEX" при ODBC-решении не "проканает". А автор уже сделал ставку на ODBC и настрогал уже кучу кода.
-
TRUNCATE TABLE ?
-
> Сергей М. © (27.08.08 16:29) [19] > С какого перепугу zap обязан "канать" ? > FoxODBC-драйвер не обязан интерпретировать всякую фоксовую > лабуду, не имеющую отношения к SQL92/99 и иже с ними
Да! Но тогда нехило бы, шоб на SQL92/99 канало простое человеческое delete from TABLE_NAME ! И при этом таблица свято очищалась бы от записей. Вот бы я возрадовался и на даже на форум бы не полез за запами и паками!
-
> Курдль (27.08.2008 22:04:24) [24]
У xBase есть уникальная возможность восстанавливать удаленые записи, кроме того ни обна мне известная база не делает упаковки после удаления. Просто некоторые повторно используют освобожденое место, но если надо уменьшить размер после удаления, то надо запускать процедуру упаковки. В некоторых СУБД это можно сделать с помощью SQL запроса, в других надо запускать отдельную утилиту.
-
> Сергей М. © (26.08.08 17:10) [2] > > > > Вот уж досталось мне наследие > > > В своей беде ты не одинок - многие несут такой же крест) >
+1
-
> Курдль (27.08.08 22:04) [24]
Я ж тебе предложил решение в [11],[13] - там канает абсолютно все касаемое фокса и при этом тф остаешься в привычной дельфийской среде с ее дейтасетами
-
А я вообще тупо после delete from TABLE_NAME делаю select * from TABLE_NAME и с помощью BatchMove кидаю в таблицу с тем же именем. И вроде все работает и размер не увнличивается (как давно это было, и до сих пор работает в одной конторе).
-
> Раиса © (28.08.08 15:03) [28] > А я вообще тупо после delete from TABLE_NAME делаю select > * from TABLE_NAME
И, цикаво, что ж тогда у нас там выбирается? Данные то уже удалены
-
> Мне надо извлекать туеву хучу мелких базочек из разных папочек. > > (Между прочим, это дорогостоящее промышленное решение, растиражированное > не на одну крупную компанию!).
Автора!
-
Виталий Панасенко © (28.08.08 15:47) [29]
Выбирается всё, что там осталось после удаления по условию Where, например. Я подумала, что и автор вопроса удаляет не все записи, а по условию.
-
Удалено модератором
-
> Anatoly Podgoretsky © (27.08.08 23:24) [25] > У xBase есть уникальная возможность восстанавливать удаленые > записи, кроме того ни обна мне известная база не делает > упаковки после удаления. Просто некоторые повторно используют > освобожденое место, но если надо уменьшить размер после > удаления, то надо запускать процедуру упаковки. В некоторых > СУБД это можно сделать с помощью SQL запроса, в других надо > запускать отдельную утилиту.
Спасибо! Я не лезу своим свиным рылом в калашный ряд DBA. Меня не интересуют проблемы упаковки БД. Мне важно, чтобы мои программы работали исправно в оговоренных ТЗ условиях аппаратного и спец. программного обеспечения. Еще мне важно, чтобы СУБД, позволяющие использовать SQL и DML над своими данными, придерживались хотя бы базовых стандартов.
> Сергей М. © (28.08.08 08:29) [27] > Я ж тебе предложил решение в [11],[13] - там канает абсолютно > все касаемое фокса и при этом тф остаешься в привычной дельфийской > среде с ее дейтасетами
Спасибо! Я не могу себе позволить нагромождать проект специфическими драйверами, протоколами компонентами и т.п.
-
> Курдль (29.08.2008 14:33:33) [33]
Какой еще DBA для xBase - это всегда было заботой конечного пользователя. Для этого Борланд предоставляет BDE Admin для поставки конечному пользователю. Кроме того программист может поместиь в меню обслуживания программы два пункта -
1. Очистка таблицы (EmptyTable - работает мгновенно) 2. Сжатие таблицы (dbiPackTable)
Или может вызывать второй пункт автоматически при определенных условий. Но это относится к первой части твоего вопроса > Очистить всю таблицу DBF с помощью SQL [dBase, FoxPro] Для VFPOLEDB это конечно не подходит. Но тебе одно из решений тебе привели (foxauto), второе ("pack TABLE_NAME" и "zap TABLE_NAME" ), но эти два надо уметь применять, просто так их в запросе приводить нельзя, надо вызывать, что то подобное exec FOXPRO сомманд, точно я не помню, поскольку FoxPro не использую, но именно это приводили в форумах как решение, и не кто не гарантирует, что это будет работать для всех команд FoxPro
И еще поскольку речь идет об полной очистке таблицы, то zap можно заменить удалением и копированием из папочки пустого шаблона. Или воссозданием таблицы с нуля CREATE TABLE, ну и еще множества способов, зависит от фантазии.
И о каких базовых стандартах SQL и DML, в части упаковки или очистки таблиц, ты говоришь, такие операции стандартом не предусмотрены и реализуются в разных СУБД по разному, от запросов MS SQL до утилит БДЕ или функций dbiPackTable/EmptyTable.
|