Гость
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / фиас количество записей в таблице addrobj / 9 сообщений из 9, страница 1 из 1
25.06.2015, 21:53
    #38993118
amasmind
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фиас количество записей в таблице addrobj
Добрый всем вечер.
Если кто знает подскажите не нашел в инете полезной информации.
1. Развернул на сервере базу фиас и в таблице addrobj - 2,5 млн записей. Чуечка подсказывает - что должно быть больше.
2. Делаю запрос
<?
$res=mysql_query("select * from addrobj");
echo mysql_numrows($res);
?>
Не может подсчитать ругается на нехватку памяти
Fatal error: Out of memory (allocated 10747904) (tried to allocate 360780772 bytes) in

Как можно перебрать все записи по очереди грамотно?
Задача:
- Берем каждую последующую запись из таблицы addrobj
- изменяем поле `formalname`
- и записываем измененное поле в другую таблицу addrobjinfo
...
Рейтинг: 0 / 0
25.06.2015, 22:03
    #38993120
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фиас количество записей в таблице addrobj
amasmind- изменяем поле `formalname`Изменяем на что?
Если нужные данные лежат в какой-то другой таблице, то все делается одним SQL-запросом. Ни в коем случае не через "select * from ...".
...
Рейтинг: 0 / 0
25.06.2015, 22:16
    #38993123
amasmind
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фиас количество записей в таблице addrobj
Там сложные изменения:
В таблице addrobj есть formalname="Лужки"
Мне надо взять из этой же таблицы по связям полный адрес
1. Поселок Лужки Псковской области Плюсского района.
2. сделать транслитерацию lujki
3. Через api яндекса найти координаты на карте
4. Отдельным скриптом склоняю Лужки, Лужкам, из Лужков...

и все эти данные потом записываю в базу.
1 скриптом тут не отделаться.
...
Рейтинг: 0 / 0
25.06.2015, 23:51
    #38993171
amasmind
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фиас количество записей в таблице addrobj
А у кого сколько записей в таблице addrobj если не секрет?
...
Рейтинг: 0 / 0
26.06.2015, 08:34
    #38993255
aleksandr-pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фиас количество записей в таблице addrobj
amasmind,
2 489 457 база двух месячной давности вместе с Крымом
...
Рейтинг: 0 / 0
26.06.2015, 11:03
    #38993395
amasmind
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фиас количество записей в таблице addrobj
aleksandr-pro,

:) спасибо
...
Рейтинг: 0 / 0
26.06.2015, 11:05
    #38993399
amasmind
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фиас количество записей в таблице addrobj
aleksandr-pro,

Не подскажешь как составить запрос что бы получить полный адрес?
Нашел вот этот запрос
-- сбор всех parentguid
WITH all_parents AS (
SELECT DISTINCT parentguid
FROM addrobj
WHERE (currstatus = 0) AND (parentguid IS NOT NULL)
)
-- выбор элементов самого нижнего уровня (не входящих в список all_parents)
-- и получение полного адреса
SELECT (make_full(aoid)).*
FROM addrobj
WHERE (currstatus = 0) AND (aoguid NOT IN (SELECT parentguid FROM all_parents))

Но он похоже не на mysql. Как его переписать?
...
Рейтинг: 0 / 0
26.06.2015, 11:07
    #38993406
dma_caviar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фиас количество записей в таблице addrobj
если только на mysql уже рекурсию изобрели)
проще не париться и составить хардкодный запрос, где отбирать конкретные требуемые уровни адреса и склеивать их в одну строку
...
Рейтинг: 0 / 0
03.07.2015, 06:19
    #38998549
aleksandr-pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фиас количество записей в таблице addrobj
amasmind,

У меня так же процедура с рекурсией FireBird
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
create or alter procedure GET_ADRES_TREE (AOGUID_IN varchar(36))
returns (
    AOGUID varchar(36),
    OFFNAME varchar(120),
    PARENT varchar(36),
    AOLEVEL integer)
as
begin
   select AOGUID,OFFNAME,PARENTGUID,aolevel from KLADR where (AOGUID=:AOGUID_IN)and(ACTSTATUS=1) 
   into :AOGUID,:OFFNAME,:PARENT,:AOLEVEL;
   suspend;
   if (:PARENT is null) then exit;
   for select AOGUID,OFFNAME,PARENT,aolevel from GET_ADRES_TREE(:PARENT) into :AOGUID,:OFFNAME,:PARENT,:AOLEVEL do suspend;
 end
...
Рейтинг: 0 / 0
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / фиас количество записей в таблице addrobj / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]