Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.05.14;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.048 c
1-1144314517
REA
2006-04-06 13:08
2006.05.14
Локализация стандартных сообщений в BPL


2-1145996978
Неважно
2006-04-26 00:29
2006.05.14
преобразования Hex в TDateTime(или String)


2-1145896517
Leonardo
2006-04-24 20:35
2006.05.14
Линия на форме


15-1145119833
Bogdan1024
2006-04-15 20:50
2006.05.14
А где можно найти перевод характеристик американских диодов


2-1145804461
SuslovaEN
2006-04-23 19:01
2006.05.14
Двумерные массивы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский