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

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

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

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

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

Важное примечаниеВажно!

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

Данные типа 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).

ПримечаниеПримечание

Также в файле форматирования можно указать форматирование для каждого поля. Дополнительные сведения см. в разделе Файлы форматирования для импорта или экспорта данных.

Примеры

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

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

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

USE AdventureWorks2008R2;
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,

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

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

-T

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

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

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

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

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

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