powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / фиас количество записей в таблице addrobj
9 сообщений из 9, страница 1 из 1
фиас количество записей в таблице addrobj
    #38993118
amasmind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый всем вечер.
Если кто знает подскажите не нашел в инете полезной информации.
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
фиас количество записей в таблице addrobj
    #38993120
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
amasmind- изменяем поле `formalname`Изменяем на что?
Если нужные данные лежат в какой-то другой таблице, то все делается одним SQL-запросом. Ни в коем случае не через "select * from ...".
...
Рейтинг: 0 / 0
фиас количество записей в таблице addrobj
    #38993123
amasmind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Там сложные изменения:
В таблице addrobj есть formalname="Лужки"
Мне надо взять из этой же таблицы по связям полный адрес
1. Поселок Лужки Псковской области Плюсского района.
2. сделать транслитерацию lujki
3. Через api яндекса найти координаты на карте
4. Отдельным скриптом склоняю Лужки, Лужкам, из Лужков...

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

:) спасибо
...
Рейтинг: 0 / 0
фиас количество записей в таблице addrobj
    #38993399
amasmind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
фиас количество записей в таблице addrobj
    #38993406
dma_caviar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если только на mysql уже рекурсию изобрели)
проще не париться и составить хардкодный запрос, где отбирать конкретные требуемые уровни адреса и склеивать их в одну строку
...
Рейтинг: 0 / 0
фиас количество записей в таблице addrobj
    #38998549
Фотография aleksandr-pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
9 сообщений из 9, страница 1 из 1
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / фиас количество записей в таблице addrobj
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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