как объединить несколько одинаковых таблиц в одну?

MapInfo, MapBasic
Ответить
Braz
Интересующийся
Сообщения: 41
Зарегистрирован: 12 янв 2009, 09:03
Репутация: 0

как объединить несколько одинаковых таблиц в одну?

Сообщение Braz » 25 фев 2009, 11:59

Исходный материал:
папка (1 планшет), в ней десяток таблиц (с именами, согласно классификатору), и таких папок куча штук (с такими же именами таблиц)
Цель:
получить одну папку (общий массив) с таблицами согласно классификатору
________________________________________________________________________________________
Как можно реализовать слияние(или может как-то другим словом это назвать) из кучи таблиц с одинаковыми именами в одну общую? В мапинфо есть такие средства?
А то переименовывать предлагает, и рабочий набор выглядит лучше с 10-ю таблицами, нежели с 10 0000.

Аватара пользователя
SS_Rebelious
Гуру
Сообщения: 1304
Зарегистрирован: 24 фев 2009, 16:51
Статьи: 10
Проекты: 3/1
Репутация: 97
Ваше звание: GIS pro-fan
Откуда: Lahti / Газ-ПУТИНбург
Контактная информация:

Re: как объединить несколько одинаковых таблиц в одну?

Сообщение SS_Rebelious » 25 фев 2009, 14:44

Для решения проблемы одинаковых имён большого числа таблиц, советую воспользоваться бесплатной утилитой LupasRename и быстренько массово переименовать таблички, чтобы мапинфо не ругалась на одинаковые названия.

Затем открыть открыть таблицы, которые требуется объединить и воспользоваться вкладкой Таблица->Добавить записи в таблицу.

Удачи!
Look for something long enough, and you will find it. Look for something without understanding, and it will find you...
"All paid jobs absorb and degrade the mind." Aristotle
If you take 1 step towards freedom it'll take 2 steps towards you!

Cancer
Участник
Сообщения: 52
Зарегистрирован: 25 фев 2009, 20:55
Репутация: 2
Откуда: Инструментарий для MapInfo
Контактная информация:

Re: как объединить несколько одинаковых таблиц в одну?

Сообщение Cancer » 25 фев 2009, 21:00

Попробуйте пакет "Инструментарий для MapInfo", там есть инструмент Слияние таблиц.
http://www.map-info.ru

Boris
Гуру
Сообщения: 4103
Зарегистрирован: 10 апр 2006, 22:34
Статьи: 3
Проекты: 1
Репутация: 400
Откуда: Париж

Re: как объединить несколько одинаковых таблиц в одну?

Сообщение Boris » 27 фев 2009, 04:24

А вы бы привели пример. В чем собственно состоит задача?
Все таблицы "лес" в папках 0001 - 9999 объединить в одну таблицу "лес"?
Если так, то в MapInfo такое средство уже встроено оно называется "Добавить записи в таблицу" ("Append Rows to table"). Или вернее команда окна MapBasic - Insert ...
Вот пример из Help'а MapBasic'а
Accordingly, the Insert statement below appends all of the records from the New Jersey table into the New York table.

Insert Into NY_ZIPS
Select * From NJ_ZIPS
Если структура ваших таблиц "лес" всегда совпадает, то все что вам нужно - это породить текстовый список следующего состава (пусть принимающая (обобщающая) таблица, называется "les0" и лежит в каталоге 0000, а все остальные имеют имя "лес" и лежат в каталогах 0001-9999:
open table ".\0000\les0" as les0
[далее в цикле по всем папкам]
open table ".\0001\лес.tab" as les
Insert Into les0 Select * From les
Rename Table les As "лес_.tab" ' эта строчка избыточна, но она позволяет отследить таблицу, которая была последней добавлена
close table лес_
Commit Table les0
[... переход к следующему каталогу и файлу]

Все сгенерированное сохранить в обычный текстовый файл.
Открыть MapInfo. Открыть окно MapBasic. Вставить туда этот текст. Командой Ctrl+A выделить все строчки.
Нажать ввод. Наслаждаться автономной работой (и надеяться, что 10000 таблиц не переполнят одну :) )
Как закончит все мигать на экране, останется одна открытая таблица les0, она и будет содержать все исходные таблицы.

Cancer
Участник
Сообщения: 52
Зарегистрирован: 25 фев 2009, 20:55
Репутация: 2
Откуда: Инструментарий для MapInfo
Контактная информация:

Re: как объединить несколько одинаковых таблиц в одну?

Сообщение Cancer » 27 фев 2009, 21:00

Добавлю ложку дегтя в теоретические выкладки - после открытия 200 таблиц в Mapinfo (даже не одновременно, а поочереди) - MapInfo поплохеет, она свалится с ошибкой.

Braz
Интересующийся
Сообщения: 41
Зарегистрирован: 12 янв 2009, 09:03
Репутация: 0

Re: как объединить несколько одинаковых таблиц в одну?

Сообщение Braz » 27 фев 2009, 22:12

Boris-y почет!

Boris
Гуру
Сообщения: 4103
Зарегистрирован: 10 апр 2006, 22:34
Статьи: 3
Проекты: 1
Репутация: 400
Откуда: Париж

Re: как объединить несколько одинаковых таблиц в одну?

Сообщение Boris » 01 мар 2009, 00:55

Cancer писал(а):Добавлю ложку дегтя в теоретические выкладки - после открытия 200 таблиц в Mapinfo (даже не одновременно, а поочереди) - MapInfo поплохеет, она свалится с ошибкой.
Я проверил. У меня - не поплохело.
Взял покрытие Московской области съемкой IRS P6. 133 контура в SHP-Файле.
1. сгенерировал команду "Save Copy As..." - 250 раз. Вставил в окно MapBasic. Запустил. Сохранилось без вопросов.
2. Открыл все 250 новых таблиц одновременно. Открылись и показались в окне. Практически без замедления.
3. закрыл все таблицы.
4. создал пустую таблицу в теми же полями.
5. как писал выше, в цикле открыл все 250 таблиц. В смысле, открыл-добавил к таблице"накопителю"-закрыл таблицу-сохранил таблицу-"накопитель". Отработало как и писал через текстовый файл в окно MapBasic.
Показало вот такой результат:
Clipboard01.jpg
Clipboard01.jpg (180.17 КБ) 12654 просмотра
Замедления - не почувствовал.

fati
Интересующийся
Сообщения: 22
Зарегистрирован: 13 мар 2009, 10:06
Репутация: 0

Re: как объединить несколько одинаковых таблиц в одну?

Сообщение fati » 13 мар 2009, 10:13

ребята, подскажите пожалуйста, у меня вопрос тоже по обьединению таблиц, только не одинаковых, а разных.
Есть 4 разных таблицы по оборудованию,но у них есть столбцы с одинаковым названием (тип, собственность, участок), мне необходимо во всех таблицах по общим столбцам выбрать записи которые относятся к участку№ и поместить их в общую таблицу, с этими столбцами (тип, собственность, участок).
Делала выборку по каждой таблице необходимых столбцов, потом сливала в общую, выдает сообщение об ошибке "Преобразовать данные не удалось".
Типа такого

Select Тип, Собственность, Участок from Оборудование1
where Участок=num
into t1
Select Тип, Собственность, Участок from Оборудование2
where Учаток=num
into t2
insert into t1
select * from t2
Select Тип, Собственность, Участок from Оборудование3
where Участок=num
into t3
insert into t1
select * from t3

С помощью sql-запроса не получаеться, потому что оно вместо того что б добавлять новые строки- добавляет столбцы! Пожалуйста,подскажите как обьеденить такие таблицы?

Boris
Гуру
Сообщения: 4103
Зарегистрирован: 10 апр 2006, 22:34
Статьи: 3
Проекты: 1
Репутация: 400
Откуда: Париж

Re: как объединить несколько одинаковых таблиц в одну?

Сообщение Boris » 13 мар 2009, 13:09

Странно, это как-то все у меня аналогичные команды работают. Select-Insert
В том числе и для таблиц с различающейся структурой.
Другое дело, что это в принципе не правильно, вы в 1-ую таблицу вставляете записи из других таблиц. Тем самым разрушаете свои исходные данные.
Сам mapInfo в этом гораздо последовательней - он не дает через команду "Append Rows to Table" добавлять записи к запросу.
Стандартно объединение однородных данных в запрос выполняется SQL командой UNION, но MapInfo SQL не содержит этой команды. Так что объединение в запросы - невозможно. Можно только создавать физическое объединение данных в новых таблицах последовательностью команд Select-Insert.
Еще раз скажу, у меня в 9.0, приведенный текст, естественно на своих данных, отработал как и написано. Без всяких сбоев и добавил новые строки с пустыми столбцами там, где данных не было в добавляемом запросе.

fati
Интересующийся
Сообщения: 22
Зарегистрирован: 13 мар 2009, 10:06
Репутация: 0

Re: как объединить несколько одинаковых таблиц в одну?

Сообщение fati » 13 мар 2009, 17:00

да, действительно, это из-за того что не хочет добавлять строки в таблицу предыдущей выборки... В обычную таблицу добавляет строки без проблем!а так хотелось обойтись временной таблицей...
Спасибо большое , Boris, за подсказку!!!

ivan_1965
Новоприбывший
Сообщения: 8
Зарегистрирован: 28 дек 2017, 09:36
Репутация: 1
Откуда: Екатеринбург

Re: как объединить несколько одинаковых таблиц в одну?

Сообщение ivan_1965 » 29 дек 2017, 12:07

Надо объединить много таблиц в одну. Ничего не изменилось?

Ответить

Вернуться в «MapInfo»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость