Установка кодовой страницы
Ключ
 
-scs < имя кодировки >
< имя кодировки >::= CP866 | KOI8-R | CP1251
Описание

Ключ используется для установки идентификаторов кодировок таблиц и их столбцов в БД, которую изначально загрузили без создания кодировок.

Ключ необходим в следующей ситуации:

  1. БД создана без таблицы $$$CHARSET, затем в БД созданы пользовательские таблицы и в них загружены данные, которые содержали текстовые значения в некоторой (одной и той же) кодировке. Эта кодировка должна быть известна пользователю, иначе он не сможет правильно задать значение ключа -scs, но она пока неизвестна СУБД. По этой причине данные в таблицах БД находятся точно в таком же виде, как они были переданы при загрузке (если грузились из файлов – то в той кодировке, как они были в файлах; если запросами с терминала – то в кодировке терминала). Если уже загруженные текстовые данные изначально загружались в нескольких разных кодировках, то ключ -scs не поможет или поможет частично (некоторые таблицы придется загружать заново);

  2. впоследствии у клиентских приложений возникла потребность работать с этой БД в разных кодировках (или только в одной, но не в той, в какой эти данные были загружены в БД. Например, данные были загружены из файлов, содержащих текстовые значения в кодировке CP866, а графический клиент под Windows хочет получать их в кодировке CP1251. Но СУБД не может выполнить преобразование загруженных данных в требуемую клиентом кодировку, т. к. она не знает, из какой кодировки надо преобразовывать данные. В этом случае СУБД необходимо предоставить соответствующую информацию.

Для предоставления СУБД информации о кодировке загруженных данных:

  1. создать при активном ядре СУБД ЛИНТЕР таблицу кодировок $$$CHARSET (выполнить sql-скрипт cstables.sql);

  2. заполнить таблицу $$$CHARSET стандартными кодировками (выполнить скрипт charsets.sql);

  3. остановить ядро СУБД ЛИНТЕР;

  4. выполнить команду

    testdb.exe -scs < имя кодировки > < каталог БД > (в среде ОС Windows)
    testdb -scs < имя кодировки > < каталог БД > (в среде ОС типа UNIX)

    где:

    • < имя кодировки > – имя той кодировки, которая должна использоваться ядром СУБД при преобразовании загруженных в БД в клиентскую кодировку (т. е. это та кодировка, в которой уже реально загружены текстовые данные в БД). СУБД пока не знает, какая именно эта кодировка, но узнает с помощью ключа -scs;

    • < каталог БД > – спецификация местоположения каталога с исправляемой БД.

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

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

  • перестройка индексов таблиц (или предварительное удаление индексов, а затем создание заново), если в таблицах содержатся индексируемые текстовые данные;

  • пересоздание хранимых процедур (для них кодировка не исправляется);

  • пересоздание триггеров, хранимых событий, глобальных переменных.

Заданное значение кодировки также устанавливается в качестве значений по умолчанию для системной и пользовательской кодировок в словаре БД. Соответственно, при последующем создании новых таблиц кодировку указывать уже необязательно (будет использоваться кодировка, указанная в ключе -scs).