Копирование данных между различными параметрами сортировки

Данные можно без потерь перемещать между столбцами в Юникоде, при этом преобразование не требуется. Тем не менее при перемещении данных между символьными столбцами не в Юникоде, требуется выполнить преобразование из исходной в целевую кодовую страницу. Кодовая страница — это упорядоченный набор символов данного сценария, с каждым из которых связан числовой индекс или значение элемента кода. Кодовые страницы поддерживают наборы символов и раскладки клавиатуры, используемые различными языковыми стандартами Microsoft Windows. Поддерживаемые кодовые страницы перечислены в разделе Архитектура параметров сортировки и кодовых страниц.

По умолчанию символьные данные преобразуются следующим образом:

Операция Символьные данные преобразуются в:

Экспорт

Символы кодовой страницы OEM

Импорт

символы кодовой страницы ANSI/Microsoft Windows

Преобразование между кодовыми страницами OEM и ANSI приводит к потере символов расширенного или двухбайтового набора символов (DBCS). Чтобы избежать таких преобразований, можно указать кодовую страницу или параметры сортировки (в Microsoft SQL Server 7.0 или более поздней версии).

ms190657.note(ru-ru,SQL.90).gifПримечание.
Дополнительные сведения о смене параметров сортировки для базы данных см. на веб-узле корпорации Майкрософт.

Начиная с версии SQL Server 7.0, за физическое хранение символьных строк отвечают параметры сортировки. Microsoft SQL Server 2005 позволяет настроить режимы сопоставления на четырех уровнях: экземпляра сервера, базы данных, столбца таблицы и выражения. Параметры сортировки SQL Server определяют три свойства:

  • Кодовую страницу, используемую для хранения символьных данных не в Юникоде.
    ms190657.note(ru-ru,SQL.90).gifПримечание.
    Microsoft В SQL Server 6.5 и более ранних версиях кодовые страницы использовались, но не хранились в параметрах сортировки.
  • Порядок сортировки для типов данных в Юникоде (nchar, nvarchar и ntext). Порядок сортировки определяет последовательность расположения символов и способ их оценки при выполнении операций сравнения.
  • Порядок сортировки для типов данных не в Юникоде (char, varchar и text).

Общие сведения о кодовых страницах и параметрах сортировки см. в разделе Настройка параметров сортировки и поддержка нескольких языков. Дополнительные сведения см. в разделе Работа с параметрами сортировки.

Использование параметров сортировки на уровне столбцов

В SQL Server 7.0 и более поздних версиях можно управлять преобразованием данных, указав параметры сортировки, в которых хранятся данные, в поле целевого файла данных для операции массового экспорта или столбце целевой таблице для операции массового импорта. Любые преобразования между параметрами сортировки файла данных и столбцов таблицы в базе данных выполняются операциями импорта и экспорта.

ms190657.note(ru-ru,SQL.90).gifПримечание.
Для управления преобразованием из одной кодовой страницы в другую в Microsoft SQL Server 6.0 или Microsoft SQL Server 6.5 кодовую страницу необходимо указать при помощи соответствующего параметра (переключателя -C программы bcp или параметра Transact-SQL CODEPAGE). Дополнительные сведения см. в подразделе «Использование кодовой страницы» далее в этом разделе. SQL Server 7.0 и более поздние версии позволяют указать кодовую страницу, однако лучше указать параметры сортировки в файле форматирования.

Параметры сортировки всегда применяются к столбцам SQLCHAR во время операций массового экспорта и импорта. Определение параметров сортировки столбцов всегда игнорируется, если в определении основного типа данных отсутствуют типы SQLCHAR или SQLNCHAR. Параметры сортировки служат для определения порядка сортировки столбцов SQLCHAR и SQLNCHAR во время операций массового импорта, если ссылка на столбцы содержится в подсказке ORDER.

Для определения параметров сортировки используются файлы форматирования. Параметры сортировки столбцов можно указать в файлах форматирования обоих типов. Дополнительные сведения об использовании параметров сортировки в файлах форматирования, отличных от XML, см. в следующем разделе. Дополнительные сведения об использовании параметров сортировки в файлах форматирования XML см. в разделе Основные сведения о XML-файлах форматирования.

Определение параметров сортировки столбцов в файле форматирования, отличном от XML

Последний (восьмой) столбец в файле форматирования, отличном от XML, содержит определение параметров сортировки, указывающее способ хранения данных столбца в файле данных. К свойствам столбца параметров сортировки относятся следующие свойства.

Свойства

Описание

name

Определяет имя параметров сортировки, которые применяются для хранения данных в файле данных. Список имен параметров сортировки SQL см. в разделе Имя параметров сортировки SQL (Transact-SQL).

RAW

Указывает, что данные хранятся в кодовой странице, заданной в соответствующем параметре команды или подсказки bcp_control BCPFILECP. Если они не заданы, то параметры сортировки файла данных определяются кодовой страницей OEM клиентского компьютера.

ms190657.note(ru-ru,SQL.90).gifПримечание.

Дополнительные сведения о параметрах кодовой страницы см. в подразделе «Использование кодовой страницы» далее в этом разделе. Дополнительные сведения о подсказке BCPFILECP см. в разделе bcp_control.

""

Эквивалентно значению RAW.

Примеры

В следующем примере продемонстрирован файл форматирования, отличный от XML, где режим сопоставления задан для второго и третьего полей. Сведения о параметрах сортировки выделены полужирным шрифтом.

9.0
4
1       SQLCHAR       0       7       "\t"     1     DepartmentID     ""
2       SQLCHAR       0       100     "\t"     2     Name             SQL_Latin1_General_CP1_CI_AS
3       SQLCHAR       0       100     "\t"     3     GroupName        SQL_Latin1_General_CP1_CI_AS
4       SQLCHAR       0       24      "\r\n"   4     ModifiedDate     ""
ms190657.note(ru-ru,SQL.90).gifПримечание.
Предыдущий файл форматирования, предназначенный для работы с таблицей HumanResources.Department в учебной базе данных AdventureWorks, содержит четыре столбца: DepartmentID, Name, GroupName и ModifiedDate. Дополнительные сведения об этой таблице см. в разделе Таблица Department (AdventureWorks).

Дополнительные сведения о файлах форматирования, отличных от XML, см. в разделе Основные сведения о файлах форматирования не в формате XML.

Использование кодовой страницы

При преобразовании данных из одной кодовой страницы в другую в SQL Server 6.0 или SQL Server 6.5 кодовую страницу необходимо указать при выполнении команды.

ms190657.note(ru-ru,SQL.90).gifПримечание.
Для управления преобразованием данных в SQL Server 7.0 или более поздней версии Microsoft рекомендует использовать файлы форматирования, которые позволяют задать параметры сортировки на уровне столбцов для операций массового экспорта и импорта. Дополнительные сведения см. в разделе «Использование параметров сортировки на уровне столбцов».

Чтобы указать кодовую страницу, используйте следующий синтаксис:

  • Чтобы указать кодовую страницу в команде bcp, используйте переключатель -C:
    -C { ACP | OEM | RAW | code_page }
  • Чтобы указать кодовую страницу в инструкции BULK INSERT или INSERT ... SELECT * FROM OPENROWSET(BULK...), используйте параметр CODEPAGE:
    CODEPAGE = { 'ACP' | 'OEM' | 'RAW' | 'code_page' }

И переключатель -C, и параметр CODEPAGE допускают следующие значения для кодовой страницы.

Значение кодовой страницы Описание

ACP

Во время операции импорта поля данных типа char, varchar или text преобразуются из кодовой страницы ANSI/Windows (ISO 1252) в кодовую страницу SQL Server.

Во время операции экспорта команда bcp преобразует эти столбцы из кодовой страницы SQL Server в кодовую страницу ANSI/Windows.

OEM (default)

Во время операции импорта поля данных типа char, varchar или text преобразуются из системной кодовой страницы OEM в кодовую страницу SQL Server.

Во время операции экспорта команда bcp преобразует эти столбцы из кодовой страницы SQL Server в системную кодовую страницу OEM.

RAW

Преобразование из одной кодовой страницы в другую не выполняется. Это наиболее быстрый параметр.

code_page

Используется кодовая страница с указанным номером (например, 850). Поддерживаемые кодовые страницы перечислены в разделе Архитектура параметров сортировки и кодовых страниц.

Примеры

В следующих примерах используется таблица HumanResources.myTeam в базе данных AdventureWorks. Перед выполнением примеров следует создать эту таблицу. Дополнительные сведения о таблице и способе ее создания см. в разделе Создание таблицы HumanResources.myTeam.

ms190657.note(ru-ru,SQL.90).gifПримечание.
Прежде чем приступить к выполнению следующего примера, удалите существующие строки из таблицы myTeam, чтобы избежать противоречащих первичных ключей.

А Определение кодовой страницы при помощи команды bcp

В этом примере команда bcp используется для массового экспорта данных из таблицы HumanResources.myTeam в базе данных AdventureWorks в файл данных myTeam850.txt, при выполнении команды указана кодовая страница 850. В командной строке Windows введите:

bcp AdventureWorks.HumanResources.myTeam out myTeam850.txt -c -C850 -T

Б Определение кодовой страницы при помощи инструкции BULK INSERT

В этом примере инструкция BULK INSERT используется для массового импорта файла myTeam850.txt, созданного командой bcp в предыдущем примере, в таблицу AdventureWorks``HumanResources.myTeam.

В средстве выполнения запросов, например в редакторе запросов SQL Server Management Studio, выполните:

USE AdventureWorks
GO
DELETE HumanResources.myTeam
GO
BULK INSERT HumanResources.myTeam 
   FROM 'C:\myTeam850.txt'
   WITH (CODEPAGE = 850);
GO

Массовый экспорт данных со сменой параметров сортировки

Во время операции массового экспорта определение параметров сортировки отвечает за кодовую страницу, которая используется для хранения символьных данных в файле данных. Оно применяется:

  • ко всем столбцам файла данных символьного формата;
  • ко всем столбцам файла собственного формата, где в качестве основного типа данных файла указан SQLCHAR;
  • к символам SQLCHAR, значение которых больше 127 или меньше 32.
    Параметры сортировки применяются к символам со значениями от 127 до 32, однако все кодовые страницы сопоставляют эти символы значениям от 32 до 127, поэтому применение различных параметров сортировки не оказывает никакого эффекта.

Ниже перечислены правила определения параметров сортировки или кодовой страницы для операции массового экспорта:

  • Если параметры сортировки столбца указаны в файле форматирования или заданы при помощи функции ODBC bcp_setcolfmt (bcp_setcolfmt), для хранения символьных данных используется кодовая страница ANSI, связанная с параметрами сортировки.
  • Если параметры сортировки столбца не заданы, но кодовая страница указана при помощи соответствующего параметра в команде или подсказке bcp_control BCPFILECP, для хранения данных SQLCHAR таких столбцов используется указанная кодовая страница.
    ms190657.note(ru-ru,SQL.90).gifПримечание.
    Дополнительные сведения о параметре кодовой страницы см. в разделе «Использование кодовой страницы» ранее в этом разделе. Дополнительные сведения о подсказке BCPFILECP см. в разделе bcp_control.
  • Если не указаны ни параметры сортировки, ни кодовая страница, для хранения данных SQLCHAR используется кодовая страница OEM клиентского компьютера.
ms190657.note(ru-ru,SQL.90).gifПримечание.
Файл данных не содержит сведения о параметрах сортировки или о кодовой странице.

Массовый экспорт данных со сменой параметров сортировки

Во время операции массового импорта выполняется интерпретация кодовой страницы столбцов, которые хранятся в виде символьных (SQLCHAR) данных в файле данных. В файле данных символьного формата все столбцы имеют тип SQLCHAR. Поскольку сведения о параметрах сортировки/кодовой странице отсутствуют в файле данных, при выполнении операции массового импорта эти сведения необходимо предоставить для каждого поля данных.

Ниже перечислены правила определения параметров сортировки или кодовой страницы для операции массового импорта:

  • Если параметры сортировки столбцов указаны в файле форматирования или при помощи функции ODBC bcp_setcolfmt (bcp_setcolfmt), для интерпретации данных SQLCHAR в файле данных используется кодовая страница ANSI, связанная с указанными параметрами сортировки столбца. Убедитесь, что указанные параметры сортировки соответствует параметрам сортировки в файле данных.
  • Если параметры сортировки столбца не заданы, но кодовая страница указана при помощи соответствующего параметра в команде или подсказке bcp_control BCPFILECP, для интерпретации данных SQLCHAR используется указанная кодовая страница.
    ms190657.note(ru-ru,SQL.90).gifПримечание.
    Дополнительные сведения о параметре кодовой страницы см. в разделе «Использование кодовой страницы» ранее в этом разделе. Дополнительные сведения о подсказке BCPFILECP см. в разделе bcp_control.
  • Если не указаны ни параметры сортировки, ни кодовая страница, для интерпретации данных в столбцах SQLCHAR используется кодовая страница OEM клиентского компьютера.

Во время операции массового импорта задание параметров сортировки отвечает за следующее:

  • Способ интерпретации кодовой страницы столбцов SQLCHAR в файле данных.
  • Способ применения подсказки ORDER (если она задана) командой bcp или инструкцией BULK INSERT.
    Для правильной интерпретации подсказки ORDER операция массового импорта использует параметры сортировки. Эта подсказка применяется к столбцам SQLCHAR и SQLNCHAR. Данные в столбцах, на которые ссылается подсказка ORDER, должны соответствовать последовательности, определенной параметрами сортировки, который привязан к столбцам. Дополнительные сведения см. в разделе Управление порядком сортировки во время массового импортирования данных.

См. также

Основные понятия

Использование символьного формата Юникода для импорта и экспорта данных
Использование собственного формата Юникода для импорта или экспорта данных
Работа с параметрами сортировки

Другие ресурсы

bcp_control
Программа bcp
bcp_setcolfmt
BULK INSERT (Transact-SQL)
Файлы форматирования для импорта или экспорта данных
Вопросы международного использования баз данных и приложений компонента Database Engine
OPENROWSET (Transact-SQL)

Справка и поддержка

Получение помощи по SQL Server 2005