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

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

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

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

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

Важно!

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

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

Сведения о том, как использовать признаки конца поля или строки, отличные от символов по умолчанию, которые предоставляются в формате Юникода, см. в статье Указание признаков конца поля и строки (SQL Server)..

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

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

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

Get-Help Параметр Описание
bcp -w Использует символьный формат Юникода.
BULK INSERT DATAFILETYPE ='widechar' Использует символьный формат Юникода при массовом импорте данных.

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

Примечание

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

Примеры

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

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

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

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

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

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

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

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

Квалификаторы Описание
-w Задает символьный формат Юникода.
-T, Задает запятую (,) в качестве признака конца поля.

Примечание. Признаком конца поля по умолчанию является символ табуляции в Юникоде (\t). Дополнительные сведения см. в разделе Определение признаков конца поля и строки (SQL Server).
-T Указывает, что программа bcp устанавливает доверительное соединение с SQL Server с использованием встроенной безопасности. Если параметр -T не указан, для входа необходимо указать -U и -P .

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

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

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

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

USE AdventureWorks2012;  
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)
Поддержка параметров сортировки и Юникода