Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.05.14;
Скачать: CL | DM;

Вниз

скопировать данные из поля с кривым именем   Найти похожие ветки 

 
July   (2006-03-16 12:30) [0]

Здравствуйте!
Ситуация такая - в базе под IB5 было поле под названием type (кто-то додумался обозвать, а субд и не препятствовала)
Теперь перешли на IB7, в запросах ругается, что не понимает, что еще за поле такое type - очевидно, зарезервированное слово.
Создала нормальное поле с другим именем, поскольку данные в таблице уже есть, заполнила его пока нулями, но надо туда скопировать актуальные данные из старого поля - этого злосчастного type. Записей несколько сотен, вручную не прокатит :)
Теперь вопрос - можно ли как-нибудь в sql-инструкции обратиться к этому полю, не используя его имени? мож по номеру какому-нибудь из системной таблицы?
Или может подскажете иной какой-нибудь способ скопировать данные из одного поля в другое?
Просто переименовать его не выйдет - много зависимостей, хоть и не индекс.
Иначе остается только достаточно геморный в текущих  обстоятельствах вариант - сгенерировать новую пустую базу с корректным именем поля и полностью переливать в нее ВСЕ данные старой. Очень хотелось бы избежать этого.
Благодарю за внимание :)


 
Anatoly Podgoretsky ©   (2006-03-16 12:32) [1]

"type"


 
Desdechado ©   (2006-03-16 13:25) [2]

http://delphimaster.net/view/3-1142418789/


 
July   (2006-03-16 13:32) [3]


> "type"


В смысле, взять в запросе в кавычки название поля?
Попробую...


 
Anatoly Podgoretsky ©   (2006-03-16 14:05) [4]

July   (16.03.06 13:32) [3]
Именно так.


 
July   (2006-03-16 16:59) [5]

update <tbl> set type_new=<tbl>."type"
...
Token unknown - line 1, char 52.
"type".

:(


 
Anatoly Podgoretsky ©   (2006-03-16 17:03) [6]

Так возможно требуется точное соблюдение регистра


 
July   (2006-03-16 17:30) [7]

Завтра попробую.
Сколько там комбинаций разных регистров 4-х букв? ;)))))
А точно какой регистр был при создании нигде не увидеть?
А то IBExpert все везде заглавными показывает..


 
Romkin ©   (2006-03-16 18:28) [8]

update  RDB$RELATION_FIELDS set rdb$field_name = "REC_TYPE"
where rdb$relation_name = "MYTABLE" and rdb$field_name = "TYPE";
Только учти, что констрейнтов и зависимостей на это поле не должно быть :)
А посмотреть поле - как раз в этой таблице


 
API ©   (2006-03-16 19:31) [9]

Попробуйте [type]


 
atruhin ©   (2006-03-17 04:23) [10]

Решал подобную задачу (именно type), следующим образом:
1. В IBExpert сохраняем все метаданные базы в файл.
2. Поиском по файлу находим все вхожения type (тригера, процедуры, индексы), и все эти объекты копируем во второй файл.
3. В начало файла помещаем, примерно такое:
  ALTER TABLE MENU_GROUPS ADD TIPE SMALLINT
  update menu_groups set TIPE = TYPE
4. Для каждого объекта создаем в начале файла: drop procedure ..., drop triger ... и т.д.
4. В конце файла удаляем поле.

Накатываем скрипт на базу, под IB5, наслаждаемся :)


 
July   (2006-03-22 12:14) [11]

я тут доступа не имела несколько дней
to Romkin, API, atruhin - ваших сообщения к сожалению увидела только сейчас, не пробовала. Под IB5 в базу лезть у меня уже возможности нет.

Проблему решила следующим образом:
- Добавила, как и собиралась, новое поле.
- Удалила один constraint, который был на старое
- перекомпилила 10 процедур, в которых были ссылки на type (заменила ссылками на новое поле)
- переименовала старое поле средствами IBExpert (он составил такую конструкцию: ALTER TABLE ... ALTER TYPE TO TYPE_OLD;)
- только после этого удалось данные из этого поля вытащить:
 update ... set type_new=type_old

Вот.. зато перегенерировать базу не пришлось :))
Всем спасибо!



Страницы: 1 вся ветка

Текущий архив: 2006.05.14;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.051 c
4-1140595930
KonstantinM
2006-02-22 11:12
2006.05.14
Проблема с SetWindowsHookEx(WH_CallWndProc,...)


15-1145549338
ArtemESC
2006-04-20 20:08
2006.05.14
C++


2-1145876145
accinctus
2006-04-24 14:55
2006.05.14
свойства файлов


15-1144148201
NeyroSpace
2006-04-04 14:56
2006.05.14
Ядерная война с терроризмом?


3-1142495330
FROSN
2006-03-16 10:48
2006.05.14
переход с D5 на D7 после него база долго грузится.