www.map-info.ru :: Просмотр темы - MapInfo + Oracle + EasyLoader ошибка!
                               РќР° главную страницу сайта

 
                                
ВходВход    РегистрацияРегистрация    ПрофильПрофиль    ПользователиПользователи    ГруппыГруппы    FAQFAQ    ПоискПоиск  

 
   Список форумов www.map-info.ru | Форум - программирование в среде MapInfo Добавить ответ
Предыдущая тема :: Следующая тема  
Автор Сообщение
agentbond007



Зарегистрирован: 08.12.2009
Сообщения: 56

СообщениеДобавлено: Вт Ноя 27, 2012 10:18 am    Заголовок сообщения: MapInfo + Oracle + EasyLoader ошибка! Добавить ответ со ссылкой на данный текст

Здравствуйте!
Делаю связку MapInfo + Oracle + EasyLoader.
Заливаю данные в Oracle программой EasyLoader, вылазит ошибка по русски вкратце "вставляемое поле больше чем в структуре базы". Как выяснилось структура создается так "FIO" VARCHAR2(30 BYTE), длинна строки указывается в байтах. Меняю в базе на c Byte на Char. Пробую снова, пишет - разная структура таблиц типо досвидания. Как настроить и что настроить чтобы структура таблиц с текстовыми полями создавалась с типом CHAR?
Извините если сумбурно написано, пока сам не знаю что к чему.


Последний раз редактировалось: agentbond007 (Пн Дек 03, 2012 3:54 am), всего редактировалось 1 раз
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Андрей Могильный



Зарегистрирован: 21.03.2006
Сообщения: 864

СообщениеДобавлено: Вт Ноя 27, 2012 7:34 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Структуру таблицы конструирует EasyLoader, у него просто в код зашито, что поле MapInfo Text(30) -> Oracle Varchar2(30). Дальше в Оракле уже идет различие Byte<>Char. У вас база в UTF8 что-ли? Оно вам точно надо по задаче? Может достаточно будет WIN1251? Попробуйте создать экземпляр в WIN1251, зальется наверняка.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
agentbond007



Зарегистрирован: 08.12.2009
Сообщения: 56

СообщениеДобавлено: Ср Ноя 28, 2012 4:33 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Андрей, спасибо за ответ! В реестре нарыл NLS_LANG = RUSSIAN_RUSSIA.CL8MSWIN1251 - кодировка на клиенте.
Глянул кодировку на сервере NLS_CHARACTERSET = AL32UTF8.
Советуете поменять кодировку на сервере в WIN1251?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Андрей Могильный



Зарегистрирован: 21.03.2006
Сообщения: 864

СообщениеДобавлено: Ср Ноя 28, 2012 6:17 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Да, но это можно сделать только пересоздав экземпляр БД, насколько я помню. Попробуйте создать второй экземпляр БД в WIN1251, чтобы проверить.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Андрей Могильный



Зарегистрирован: 21.03.2006
Сообщения: 864

СообщениеДобавлено: Ср Ноя 28, 2012 6:19 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Да, точно, вот пример команды создания БД в Oracle, видите CHARACTER SET? Вот туда WIN1251.

CREATE DATABASE mynewdb
USER SYS IDENTIFIED BY pz6r58
USER SYSTEM IDENTIFIED BY y1tz5p
LOGFILE GROUP 1 ('/vobs/oracle/oradata/mynewdb/redo01.log') SIZE 100M,
GROUP 2 ('/vobs/oracle/oradata/mynewdb/redo02.log') SIZE 100M,
GROUP 3 ('/vobs/oracle/oradata/mynewdb/redo03.log') SIZE 100M
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXLOGHISTORY 1
MAXDATAFILES 100
MAXINSTANCES 1
CHARACTER SET US7ASCII
NATIONAL CHARACTER SET AL16UTF16
DATAFILE '/vobs/oracle/oradata/mynewdb/system01.dbf' SIZE 325M REUSE
EXTENT MANAGEMENT LOCAL
DEFAULT TEMPORARY TABLESPACE tempts1
DATAFILE '/vobs/oracle/oradata/mynewdb/temp01.dbf'
SIZE 20M REUSE
UNDO TABLESPACE undotbs
DATAFILE '/vobs/oracle/oradata/mynewdb/undotbs01.dbf'
SIZE 200M REUSE AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED;
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
agentbond007



Зарегистрирован: 08.12.2009
Сообщения: 56

СообщениеДобавлено: Чт Ноя 29, 2012 3:55 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Создал экземлляр базы с кодировкой
NLS_CHARACTERSET = CL8MSWIN1251
Попробывал создать таблицу с текстовыми полями, создает по умолчанию COLUMN1 VARCHAR2(20 BYTE)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Андрей Могильный



Зарегистрирован: 21.03.2006
Сообщения: 864

СообщениеДобавлено: Чт Ноя 29, 2012 6:58 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Все правильно, EasyLoader'то заливает?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
agentbond007



Зарегистрирован: 08.12.2009
Сообщения: 56

СообщениеДобавлено: Пн Дек 03, 2012 3:52 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Проверить заливку данных мне не удалось, создал кривой экземпляр базы - MapInfo к нему не подключается пишет ошибку связанную с каким то 4-м параметром. Снес Oracle и поставил заново. Подсказали что требуется прописать в переменных среды NLS_LENGTH_SEMANTICS = CHAR, так и сделал. Данные залились без проблем! Теперь следущая проблема - при открытии в MapInfo залитого слоя пишет сообщение:
"Загруженная Вами таблица не может быть изменена. Подробную информацию Вы можете найти в книге Руководство пользователя MapInfo" - ничего там не нашел или не понял =(((
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
agentbond007



Зарегистрирован: 08.12.2009
Сообщения: 56

СообщениеДобавлено: Пн Дек 03, 2012 8:55 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Поменял кодировку в базе: ALTER DATABASE CHARACTER SET INTERNAL_USE CL8MSWIN1251; Теперь данные заливаются и редактируются но не сохраняются =( Пишет что слой в базе с типом геометрии 2001, а вставляется с типом 2003.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Андрей Могильный



Зарегистрирован: 21.03.2006
Сообщения: 864

СообщениеДобавлено: Пн Дек 03, 2012 3:40 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Ну это уже другая ошибка, можно было бы и новую тему открыть или поискать на эту тему уже существующие топики.
Почему-то не хочет сохранять разный тип геометрии в слое. Попробуйте поочередно - точки, линии, регионы. Что-то сохранит.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
agentbond007



Зарегистрирован: 08.12.2009
Сообщения: 56

СообщениеДобавлено: Ср Дек 05, 2012 5:31 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Все получилось и залить и сохранить просто надо было пересоздать пространственный индекс без параметров. Подведу итог связки MapInfo с Oracle как это у меня получилось =):
1. Устанавливаем Oracle XE 11
2. Правим реестр NLS_LANG = AMERICAN_AMERICA.CL8MSWIN1251
3. Правим кодировку в БД:
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER DATABASE OPEN;
ALTER DATABASE CHARACTER SET INTERNAL_USE CL8MSWIN1251;
SHUTDOWN;
STARTUP;
4. Конвертируем в SHP и обратно в TAB для удаления мусора(точки, линии, текст)
5. Заливаем данные(полигоны) EasyLoader`ом от MapInfo 10
6. Пересоздаём индекс IndexName_SX каждого залитого слоя без параметров(PARAMETERS)
Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
   Список форумов www.map-info.ru | Форум - программирование в среде MapInfo Добавить ответ
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Top.Mail.Ru