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

Изменения: 14 апреля 2006 г.

Символьный формат Юникода рекомендуется для массового переноса данных между несколькими экземплярами Microsoft SQL Server при помощи файла данных, содержащего символы расширенной или двухбайтовой кодировки (DBCS). Формат символьных данных Юникода позволяет экспортировать данные из сервера в кодовой странице, отличающейся от кодовой страницы, используемой выполняющим операцию клиентом. В этих случаях использование символьного формата Юникода имеет следующие преимущества.

  • Если данные источника и назначения имеют тип данных Юникода, при использовании символьного формата Юникода все символьные данные сохраняются.
  • Если данные источника и назначения имеют тип данных, отличный от Юникода, использование символьного формата Юникода позволяет уменьшить потери дополнительных символов данных источника, которые не могут быть представимы в назначении.

Файлы данных символьного формата Юникода следуют соглашениям для файлов Юникода. Первые два байта файла являются шестнадцатеричными числами 0xFFFE. Эти байты служат в качестве меток порядка байтов, определяющих, хранится старший байт в файле первым или последним.

ms188289.note(ru-ru,SQL.90).gifВажно!
Чтобы файл форматирования мог работать с файлом данных в Юникоде, все поля входных данных должны быть представлены в виде текстовых строк в Юникоде (то есть в Юникоде в виде строк фиксированной длины или заканчивающимися символом конца строки).

Данные типа sql_variant, хранящиеся в файле данных символьного формата Юникода, обрабатываются таким же образом, что и данные файла данных символьного формата, за исключением того, что они хранятся как данные типа данных nchar, а не как данные типа данных char. Дополнительные сведения о символьном формате см. в разделе Применение символьного формата при импорте и экспорте данных.

Об использовании признака конца поля или строки, отличного от признака по умолчанию, предоставляемого в символьном формате Юникода, см. в разделе Определение признаков конца поля и строки.

Параметры команд для символьного формата Юникода

Импортировать в таблицу данные символьного формата Юникода можно при помощи программы bcp, инструкций BULK INSERT или INSERT ... SELECT * FROM OPENROWSET(BULK...). Для команды bcp или инструкции BULK INSERT формат данных можно задать в командной строке. Для инструкции INSERT ... SELECT * FROM OPENROWSET(BULK...) нужно указать формат данных в файле форматирования.

Символьный формат Юникода поддерживается следующими параметрами командной строки.

Команда Параметр Описание

bcp

-w

Использует символьный формат Юникода.

BULK INSERT

DATAFILETYPE ='widechar'

Использует символьный формат Юникода при массовом импорте данных.

Дополнительные сведения см. в разделе Программа bcp, BULK INSERT (Transact-SQL) или OPENROWSET (Transact-SQL).

ms188289.note(ru-ru,SQL.90).gifПримечание.
Также в файле форматирования может задаваться форматирование для каждого поля. Дополнительные сведения см. в разделе Файлы форматирования для импорта или экспорта данных.

Примеры

В следующем примере демонстрируется массовый экспорт символьных данных в Юникоде при помощи программы bcp и массовый импорт тех же данных при помощи инструкции BULK INSERT.

Образец таблицы

Для работы примеров необходимо, чтобы в образце базы данных AdventureWorks в схеме dbo была создана таблица myTestUniCharData. Перед выполнением примеров следует создать эту таблицу. Чтобы создать эту таблицу, в редакторе запросов среды SQL Server Management Studio выполните:

USE AdventureWorks;
GO
CREATE TABLE myTestUniCharData (
   Col1 smallint,
   Col2 nvarchar(50),
   Col3 nvarchar(50)
   ); 

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

INSERT INTO myTestUniCharData(Col1,Col2,Col3)
   VALUES(1,'DataField2','DataField3');
INSERT INTO myTestUniCharData(Col1,Col2,Col3)
   VALUES(2,'DataField2','DataField3');
GO
SELECT Col1,Col2,Col3 FROM myTestUniCharData

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

Для экспорта данных из таблицы в файл данных используйте программу bcp с параметром out и следующими квалификаторами.

Квалификаторы

Описание

-w

Задает символьный формат Юникода.

-t,

Задает запятую (,) в качестве признака конца поля.

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

По умолчанию признаком конца поля служит символ табуляции Юникода (\t). Дополнительные сведения см. в разделе Определение признаков конца поля и строки.

-T

Указывает, что программа bcp устанавливает доверенное соединение с SQL Server при помощи встроенной системы безопасности. Если квалификатор -T не задан, для успешного входа необходимо указать квалификаторы -U и -P.

Далее приводится пример массового экспорта символьных данных в Юникоде из таблицы myTestUniCharData в новый файл данных myTestUniCharData-w.Dat, в котором признаком конца поля служит запятая (,). В командной строке Microsoft Windows введите:

bcp AdventureWorks..myTestUniCharData out C:\myTestUniCharData-w.Dat -w -t, -T

Использование инструкции BULK INSERT для массового импорта символьных данных формата Юникода

В следующем примере инструкция BULK INSERT используется для импорта данных из файла myTestUniCharData-w.Dat в таблицу myTestUniCharData. В инструкции должен быть объявлен признак конца поля (,), отличающийся от установленного по умолчанию. В редакторе запросов среды SQL Server Management Studio выполните:

USE AdventureWorks;
GO
BULK INSERT myTestUniCharData 
   FROM 'C:\myTestUniCharData-w.Dat' 
   WITH (
      DATAFILETYPE='widechar',
      FIELDTERMINATOR=','
   ); 
GO
SELECT Col1,Col2,Col3 FROM myTestUniCharData;
GO

См. также

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

Работа с данными в Юникоде

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

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

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

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

Журнал изменений

Версия Журнал

14 апреля 2006 г.

Новое содержимое:
  • Добавлено примечание о требованиях к использованию файла форматирования с файлом символьных данных в Юникоде.