Установка кодовой страницы
Ключ
-scs < имя кодировки > < имя кодировки >::= CP866 | KOI8-R | CP1251
Описание
Ключ используется для установки идентификаторов кодировок таблиц и их столбцов в БД, которую изначально загрузили без создания кодировок.
Ключ необходим в следующей ситуации:
-
БД создана без таблицы
$$$CHARSET
, затем в БД созданы пользовательские таблицы и в них загружены данные, которые содержали текстовые значения в некоторой (одной и той же) кодировке. Эта кодировка должна быть известна пользователю, иначе он не сможет правильно задать значение ключа-scs
, но она пока неизвестна СУБД. По этой причине данные в таблицах БД находятся точно в таком же виде, как они были переданы при загрузке (если грузились из файлов – то в той кодировке, как они были в файлах; если запросами с терминала – то в кодировке терминала). Если уже загруженные текстовые данные изначально загружались в нескольких разных кодировках, то ключ-scs
не поможет или поможет частично (некоторые таблицы придется загружать заново); -
впоследствии у клиентских приложений возникла потребность работать с этой БД в разных кодировках (или только в одной, но не в той, в какой эти данные были загружены в БД. Например, данные были загружены из файлов, содержащих текстовые значения в кодировке CP866, а графический клиент под Windows хочет получать их в кодировке CP1251. Но СУБД не может выполнить преобразование загруженных данных в требуемую клиентом кодировку, т. к. она не знает, из какой кодировки надо преобразовывать данные. В этом случае СУБД необходимо предоставить соответствующую информацию.
Для предоставления СУБД информации о кодировке загруженных данных:
-
создать при активном ядре СУБД ЛИНТЕР таблицу кодировок
$$$CHARSET
(выполнить sql-скриптcstables.sql
); -
заполнить таблицу
$$$CHARSET
стандартными кодировками (выполнить скриптcharsets.sql
); -
остановить ядро СУБД ЛИНТЕР;
-
выполнить команду
testdb.exe -scs < имя кодировки > < каталог БД > (в среде ОС Windows) testdb -scs < имя кодировки > < каталог БД > (в среде ОС типа UNIX)
где:
-
< имя кодировки > – имя той кодировки, которая должна использоваться ядром СУБД при преобразовании загруженных в БД в клиентскую кодировку (т. е. это та кодировка, в которой уже реально загружены текстовые данные в БД). СУБД пока не знает, какая именно эта кодировка, но узнает с помощью ключа
-scs
; -
< каталог БД > – спецификация местоположения каталога с исправляемой БД.
-
Ключ не перекодирует ранее загруженную в БД информацию, а лишь устанавливает идентификаторы кодировок для всех таблиц и столбцов БД.
После установки нужной кодировки могут потребоваться некоторые дополнительные действия:
-
перестройка индексов таблиц (или предварительное удаление индексов, а затем создание заново), если в таблицах содержатся индексируемые текстовые данные;
-
пересоздание хранимых процедур (для них кодировка не исправляется);
-
пересоздание триггеров, хранимых событий, глобальных переменных.
Заданное значение кодировки также устанавливается в качестве значений по
умолчанию для системной и пользовательской кодировок в словаре БД.
Соответственно, при последующем создании новых таблиц кодировку указывать уже
необязательно (будет использоваться кодировка, указанная в ключе -scs
).