Использование символьного формата Юникода для импорта и экспорта данных (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...) нужно указать формат данных в файле форматирования.

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

Команда

Параметр

Описание

bcp

-w

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

BULK INSERT

DATAFILETYPE = 'widechar'

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

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

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

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

Примеры

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

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

Для работы примеров необходимо, чтобы в образце базы данных AdventureWorks2012 в схеме dbo была создана таблица myTestUniCharData. Перед выполнением примеров следует создать эту таблицу. Для создания этой таблицы в редакторе запросов среды Среда 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)

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

Поддержка параметров сортировки и Юникода