Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 выборка всей таблицы MS Access по частям  [new]
demon_mhm
Member

Откуда:
Сообщений: 26
Есть большущая таблица MS Access (больше 7 млн. записей). Вся в памяти не помещается. Работаю с ней через функции odbc из PHP4. Для перегонки в MySQL необходимо выбирать ее по частям. Но конструкция limit n,m почему-то не работает. Подскажите пожалуйста, как эта конструкция реализована в SQL-запросах к MS Access, или она там не реализована вообще?
27 мар 06, 12:56    [2492546]     Ответить | Цитировать Сообщить модератору
 Re: выборка всей таблицы MS Access по частям  [new]
MsDatabaseru
Member

Откуда: Hobby.MsDatabase.ru
Сообщений: 10938
такой функции нет
реализовать можно через top

типа:
select top 10 id  
from ... 
where id  not in (select top 90 id from ...  order by id) 
order by id
27 мар 06, 13:00    [2492559]     Ответить | Цитировать Сообщить модератору
 Re: выборка всей таблицы MS Access по частям  [new]
demon_mhm
Member

Откуда:
Сообщений: 26
MsDatabaseru
такой функции нет
реализовать можно через top

типа:
select top 10 id  
from ... 
where id  not in (select top 90 id from ...  order by id) 
order by id


А можно чуть подробнее? Не совсем понял, Вы уж извините...
Есть 7 млн записей, id нету, нет вообще уникального поля, в принципе, индекс можно построить, но, по двум или трем полям.
Необходимо за каждый запрос выбирать например по 1000 записей, не опираясь на данные таблицы, просто по количеству. В принципе, можно обработанные записи удалять. Как это сделать запросами к Access-у?
27 мар 06, 13:07    [2492593]     Ответить | Цитировать Сообщить модератору
 Re: выборка всей таблицы MS Access по частям  [new]
MsDatabaseru
Member

Откуда: Hobby.MsDatabase.ru
Сообщений: 10938
вообще уникальное поле крайне желательно,
добавьте поле счетчика и сделайте по нему первичный ключ, пригодится не только в этой ситуации

можно вмето id использовать комбинацию
myintfield1 & '/' & myintfield2 & '/' & myintfield3

в данном случае я использовал '/' в качестве разделителя, так как поля числовые, если поля строковые то надо подобрать разделителем комбинацию которая не может быть в полях
27 мар 06, 13:26    [2492688]     Ответить | Цитировать Сообщить модератору
 Re: выборка всей таблицы MS Access по частям  [new]
demon_mhm
Member

Откуда:
Сообщений: 26
MsDatabaseru
вообще уникальное поле крайне желательно,
добавьте поле счетчика и сделайте по нему первичный ключ, пригодится не только в этой ситуации

можно вмето id использовать комбинацию
myintfield1 & '/' & myintfield2 & '/' & myintfield3

в данном случае я использовал '/' в качестве разделителя, так как поля числовые, если поля строковые то надо подобрать разделителем комбинацию которая не может быть в полях


А вот так можно:
select top 1000 from table 
обработка...
delete top 1000 from table
и так пока таблица не кончится? :)
27 мар 06, 13:31    [2492719]     Ответить | Цитировать Сообщить модератору
 Re: выборка всей таблицы MS Access по частям  [new]
MsDatabaseru
Member

Откуда: Hobby.MsDatabase.ru
Сообщений: 10938
бога ради если вас не смущает обилие операций вставки - удаления, кроме того придется еще периодически сжимать базу...
27 мар 06, 13:42    [2492780]     Ответить | Цитировать Сообщить модератору
 Re: выборка всей таблицы MS Access по частям  [new]
MsDatabaseru
Member

Откуда: Hobby.MsDatabase.ru
Сообщений: 10938
насколько я понимаю это для web - решения - способ временных таблиц будет существенно снижать общую производительность, при нескольких одновременных юзерах загнет сервак все таки вставка 7 миллионов записей это много
27 мар 06, 13:47    [2492798]     Ответить | Цитировать Сообщить модератору
 Re: выборка всей таблицы MS Access по частям  [new]
MsDatabaseru
Member

Откуда: Hobby.MsDatabase.ru
Сообщений: 10938
если же таблица постоянного содержания то лучше добавить столбец "номер страницы" и пронумеровать
27 мар 06, 13:49    [2492806]     Ответить | Цитировать Сообщить модератору
 Re: выборка всей таблицы MS Access по частям  [new]
demon_mhm
Member

Откуда:
Сообщений: 26
MsDatabaseru
бога ради если вас не смущает обилие операций вставки - удаления, кроме того придется еще периодически сжимать базу...


Да мне эта база не нужна, мне нужно из нее данные вытащить, переварить и в мускул затащить. Тоесть, такая конструкция будет работать? Сортировка записей не изменится? Что прочитал, то и удалю?
27 мар 06, 13:49    [2492809]     Ответить | Цитировать Сообщить модератору
 Re: выборка всей таблицы MS Access по частям  [new]
MsDatabaseru
Member

Откуда: Hobby.MsDatabase.ru
Сообщений: 10938
по идее не должна но для уверенности задай порядок сортировки явно по твоим трем полям
27 мар 06, 13:52    [2492821]     Ответить | Цитировать Сообщить модератору
 Re: выборка всей таблицы MS Access по частям  [new]
bubucha
Member

Откуда:
Сообщений: 5636
Можкт для уверенности открыть два рекордсета и программно перегнать, да тормозно, но железно. Я так понимаю это разовая акция?
27 мар 06, 13:58    [2492852]     Ответить | Цитировать Сообщить модератору
 Re: выборка всей таблицы MS Access по частям  [new]
Программист-Любитель
Member

Откуда:
Сообщений: 16839
demon_mhm
Есть 7 млн записей, id нету, нет вообще уникального поля,


Гавно а не таблица.
27 мар 06, 14:01    [2492875]     Ответить | Цитировать Сообщить модератору
 Re: выборка всей таблицы MS Access по частям  [new]
demon_mhm
Member

Откуда:
Сообщений: 26
Что-то не работает:
delete top 10000 from table
что-то не так пишу?
27 мар 06, 14:07    [2492911]     Ответить | Цитировать Сообщить модератору
 Re: выборка всей таблицы MS Access по частям  [new]
demon_mhm
Member

Откуда:
Сообщений: 26
Достоинства и недостатки таблицы предлагаю не обсуждать :) Шеф дал, сказал прикрутить к сайту, что есть, то и перегоняю...
Да, акция разовая, просто перегнать и забыть об акцессе как о страшном сне :)
27 мар 06, 14:08    [2492920]     Ответить | Цитировать Сообщить модератору
 Re: выборка всей таблицы MS Access по частям  [new]
bubucha
Member

Откуда:
Сообщений: 5636
автор
Да, акция разовая, просто перегнать

В access прилинковать обе таблицы, запросом на добавление перегнать из одно в другую. Вроде проще никак.
27 мар 06, 14:12    [2492945]     Ответить | Цитировать Сообщить модератору
 Re: выборка всей таблицы MS Access по частям  [new]
Программист-Любитель
Member

Откуда:
Сообщений: 16839
DELETE *
FROM Таблица1
WHERE i IN (SELECT TOP 1000 i FROM Таблица1)

Без ключа плёхо, я же писал какая таблица.

Делать на ней нумерацию по рецептам самообъединения из ФАКА - на 7 млн. записей быстрее умереть от старости.
27 мар 06, 14:14    [2492961]     Ответить | Цитировать Сообщить модератору
 Re: выборка всей таблицы MS Access по частям  [new]
MsDatabaseru
Member

Откуда: Hobby.MsDatabase.ru
Сообщений: 10938
DELETE *
FROM Таблица1
WHERE id in (select top 1000 id from Таблица1 )
27 мар 06, 14:14    [2492964]     Ответить | Цитировать Сообщить модератору
 Re: выборка всей таблицы MS Access по частям  [new]
bubucha
Member

Откуда:
Сообщений: 5636
MsDatabaseru
WHERE id in (select top 1000 id from Таблица1 )

Дык нету там id...
27 мар 06, 14:16    [2492981]     Ответить | Цитировать Сообщить модератору
 Re: выборка всей таблицы MS Access по частям  [new]
Программист-Любитель
Member

Откуда:
Сообщений: 16839
Ну какие-то поля-справочники в ней должны быть! Поисследовать Count'ами, придумать разбивку на отдельные запчасти.
27 мар 06, 14:16    [2492982]     Ответить | Цитировать Сообщить модератору
 Re: выборка всей таблицы MS Access по частям  [new]
bubucha
Member

Откуда:
Сообщений: 5636
Я только не понял, почему надо по частям? За раз никак?
27 мар 06, 14:18    [2492996]     Ответить | Цитировать Сообщить модератору
 Re: выборка всей таблицы MS Access по частям  [new]
demon_mhm
Member

Откуда:
Сообщений: 26
bubucha
автор
Да, акция разовая, просто перегнать

В access прилинковать обе таблицы, запросом на добавление перегнать из одно в другую. Вроде проще никак.


Дык перегонять-то с умом надо, струтура конечных таблиц другая, надо через ПХП перегонять. Пробовал через odbc перегонять, так вылезла проблемма с кодировками
27 мар 06, 14:22    [2493031]     Ответить | Цитировать Сообщить модератору
 Re: выборка всей таблицы MS Access по частям  [new]
demon_mhm
Member

Откуда:
Сообщений: 26
bubucha
Я только не понял, почему надо по частям? За раз никак?


да потому что база жирная неимоверно, не лезет в память, у винды виртуал заканчивается и она ложится тихонько :)
27 мар 06, 14:23    [2493047]     Ответить | Цитировать Сообщить модератору
 Re: выборка всей таблицы MS Access по частям  [new]
Программист-Любитель
Member

Откуда:
Сообщений: 16839
Через MS SQL большие объемы данных перкгоняются замечательно. На миллионах записей Аксесс не ложится.

Может к MS SQL прицепить и источник и приемник и DTS'ом ?
27 мар 06, 14:32    [2493110]     Ответить | Цитировать Сообщить модератору
 Re: выборка всей таблицы MS Access по частям  [new]
MsDatabaseru
Member

Откуда: Hobby.MsDatabase.ru
Сообщений: 10938
Программист-Любитель
Через MS SQL большие объемы данных перкгоняются замечательно. На миллионах записей Аксесс не ложится.

Может к MS SQL прицепить и источник и приемник и DTS'ом ?


MySQL <> MS SQL ))
27 мар 06, 14:34    [2493122]     Ответить | Цитировать Сообщить модератору
 Re: выборка всей таблицы MS Access по частям  [new]
Программист-Любитель
Member

Откуда:
Сообщений: 16839
Я именно это и имел в виду.

Прицепить к MS SQL И источник И приемник.

Он будет промежуточной станцией, перегоняющей из источника (ACCESS) в применик (MySQL)
27 мар 06, 14:39    [2493159]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft Access Ответить